Здравствуйте ребята, мне нужна помощь по лабораторной работе Реализовать игру «Гонки» на Pascal ABC. На экране изображается замкнутый гоночный трек, рисуемый при помощи двух прямоугольников - один внутри другого Высота и ширина внешнего прямоугольника генерируются программой как случайные числа при помощи функции random. Диапазон возможной ширины и высоты взять, например, в пределах от 200 до 400 пикселей. Смещение левой верхней точки внутреннего прямоугольника относительно левой верхней точки внешнего прямоугольника тоже задать случайными числами, например, в диапазоне от 10 до 30 пикселей. Размеры внутреннего прямоугольника опять же задать как случайные числа, но так, чтобы границы внутреннего прямоугольника не вылезали за границы внешнего, и чтобы справа и снизу между прямоугольниками тоже оставалось некоторое пространство примерно от 10 до 30 пикселей. Область между прямоугольниками считается треком, пригодным для движения гоночных машин. Область внутри внутреннего прямоугольника и снаружи внешнего считается обочиной, непригодной для движения машин. Изначально машина игрока устанавливается в некоторую случайную точку на треке и имеет нулевую скорость. Цель игрока - проехать по треку за минимальное количество ходов. На каждом ходе игрок может изменять скорость машины по оси X и скорость по оси Y не более чем на единицу (скорость, равная единице, соответствует перемещению на один пиксель за ход). То есть на каждом ходу игрок может выбрать один из следующих вариантов действий: 1. Увеличить скорость по оси X на единицу и увеличить скорость по оси Y на единицу. 2. Увеличить скорость по оси X на единицу и оставить скорость по оси Y неизменной. 3. Увеличить скорость по оси X на единицу и уменьшить скорость по оси Y на единицу. 4. Оставить скорость по оси X неизменной и увеличить скорость по оси Y на единицу. 5. Оставить скорость по оси X неизменной и оставить скорость по оси Y неизменной. 6. Оставить скорость по оси X неизменной и уменьшить скорость по оси Y на единицу. 7. Уменьшить скорость по оси X на единицу и увеличить скорость по оси Y на единицу. 8. Уменьшить скорость по оси X на единицу и оставить скорость по оси Y неизменной. 9. Уменьшить скорость по оси X на единицу и уменьшить скорость по оси Y на единицу. Сразу после выбора игроком действия машина сдвигается на экране в соответствии с той скоростью, которую она получает. Если после этого машина остаётся на трассе (или на границе между трассой и обочиной), то у неё остаётся полученная скорость, и игрок переходит к следующему ходу (то есть ещё раз выбирает один из девяти вариантов действий). Если же машина после хода оказывается за границей трека, то её скорость сразу становится равно нулю по обеим осям, и игрок опять же переходит к следующему ходу. Для управления машиной в программе должен быть интерфейс (сделать/нарисовать клавиши: вверх, вниз, влево, вправо, и кнопка: ОК) Четыре кнопки позволяют уменьшать/увеличивать скорость по осям X или Y, а кнопка OK - принять выбранную скорость и сделать ход. В центре располагается стрелка, которая показывает направление и величину текущей скорости машины. Программа обязательно должна быть реализована по модульному принципу. Каждая подзадача реализуется в виде отдельной функции или процедуры, имеющей соответствующее решаемой задаче название и список параметров и пригодной для адекватного использования в других программах. Размер подпрограмм должен быть как можно меньше: количество команд в теле каждой процедуры или функции - от одной до семи.
Помогите с прогой на С++ На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались. с комментариями плиз.
эт на курсовую тянет) у меня в восьмом классе такая тема на паскале была. что отдаётся программе и что она возвращает? координаты всех ферзей?
ну мой вариант выводил все варианты таких расстановок. вот. я писал на паскале и было это 2 года назад=) но щас вспомню и быстренько сделаю на cpp К вечеру нормально будет?)
Читать + исходник на С: Code: int col[8], up_free[15], dn_free[15], coln[8] ; main( ) { int i ; for ( i = 0 ; i <= 7 ; i++ ) col[i] = 1 ; for ( i = 0 ; i <= 14 ; i++ ) up_free[i] = dn_free[i] = 1 ; clrscr( ) ; addqueen( ) ; } addqueen( ) { int i, c, r ; static int comb, row = -1 ; row++ ; /* Проверяем колонки */ for ( i = 0 ; i <= 7 ; i++ ) { /* если клетка не находится под ударом */ if ( col[i] && up_free[i+row] && dn_free[row-i+7]) { /* запоминаем, что в строке находится ферзь */ coln[row] = i ; /* маркируем колонку и диагональ */ col[i] = 0 ; up_free[i+row] = 0 ; dn_free[row-i+7] = 0 ; /* если заполнены все строки */ if ( row >= 7 ) { comb++ ; printf ( "\n\n\ncombination no. %d", comb ) ; for ( r = 0 ; r <= 7 ; r++ ) { printf ( "\n" ) ; for ( c = 0 ; c <= 7 ; c++ ) { if ( c == coln[r] ) printf ( " Q " ) ; else printf ( " . " ) ; } } } else addqueen( ) ; /* снимаем пометку с колонки и диагонали */ col[ coln[row] ] = 1 ; up_free[ row + coln[row] ] = 1 ; dn_free[ row - coln[ row ] + 7 ] = 1 ; } } row-- ; /* уменьшаем счетчик строк, пробуем следующую комбинацию */ }
HTML: #include<stdio.h> int col[8]; int up_free[15]; int dn_free[15]; int coln[8]; void addqueen(){ int i,c,r; static int comb, row = -1; row++; //Проверяем все колонки for (i = 0; i <= 7; i++){ //Если колонка не находится под ударом if ( col[i] && up_free[i+row] && dn_free[row-i+7]){ //Запоминаем что в строке есть ферзь coln[row] = i; //Маркируем колонку и обе диагонали col[i] = 0; up_free[i+row] = 0; dn_free[row-i+7] = 0; //Если все строки мы уже запомнили, то выводим комбинацию if (row >= 7){ comb++; printf("\n\nCombination number - %d\n",comb); for (r = 0; r <= 7; r++){ printf("\n"); for (c = 0; c <=7; c++){ if (c == coln[r]){ printf("@"); } else{ printf("-"); } } } } else{ addqueen(); } //Снимаем метку с колонки и диагонали col[coln[row]] = 1; up_free[row+coln[row]] = 1; dn_free[row-coln[row]+7] = 1; } } //Переходим к следующему варианту row--; } int main(){ int i; for (i = 0; i <= 7; i++){ col[i] = 1; } for (i = 0; i<= 14; i++){ up_free[i] = dn_free[i] = 1; } addqueen(); return 0; } прогу писал давно - так что щас не думал, просто перевёл с одного языка на другой. исходник. нужно только скомпилировать и запустить)
Ребята срочно, помогите пожалуйста с задачкой, надо написать игру на C# как вот здесь(аналогичную) http://ifolder.ru/11376454 если что вот моя аська: 396052292
Пмогите еще раз плиз.Перевести прогу с Паскаля на С++ Помогите перевести прогу с паскаля в с++ (полностью)с коментами если можно. Прога вот: Code: Uses CRT; type real=extended; const matrixA: array[1..3,1..3] of real = ((-19/20,1/5, 3/5), (-1 ,0.1, 0.5), (-0.01 ,0 ,1/200)); One: array [1..3,1..3] of real = ((1,0,0), (0,1,0), (0,0,1)); U:array[1..3] of real = (1,1,1.1); var i,j,k,q:byte; A,At,A1,A2,Ar,One1:array[1..3,1..3] of real; delta,Det,S,alpha:real; B,Z,U1:array[1..3] of real; f:text; Procedure TransA; begin for i:=1 to 3 do for j:=1 to 3 do At[i,j]:=A[j,i] end; Function Koef(par1,par2:byte):real; var Sum:byte; Tmp:real; begin Sum:=par1+par2; Tmp:=1; for k:=1 to sum do Tmp:=Tmp*(-1); Koef:=Tmp; end; Function AlAdd(par1,par2:byte):real; type element=record value:real; flag:boolean; end; var BB:array[1..2,1..2] of real; AA:array[1..3,1..3] of element; k,v,w:byte; N:array[1..4] of real; P1:real; begin for v:=1 to 3 do for w:=1 to 3 do begin AA[v,w].value:=A2[v,w]; AA[v,w].flag:=true end; for v:=1 to 3 do AA[par1,v].flag:=false; for v:=1 to 3 do AA[v,par2].flag:=false; { for v:=1 to 3 do begin for w:=1 to 3 do write(AA[i,j].value:2:3,' '); writeln end; } k:=1; for v:=1 to 3 do for w:=1 to 3 do begin if AA[v,w].flag then begin N[k]:=AA[v,w].value; { writeln(N[k]);} k:=k+1 end; end; BB[1,1]:=N[1]; BB[1,2]:=N[2]; BB[2,1]:=N[3]; BB[2,2]:=N[4]; { writeln('alg dop',par1,par2,' ',BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1]);} AlAdd:=BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1]; end; Function DetCount:real; var S1:real; z:byte; begin S1:=0; for z:=1 to 3 do S1:=S1+A2[1,z]*Koef(1,z)*AlAdd(1,z); DetCount:=S1; end; Procedure RevMatr; begin for i:=1 to 3 do for j:=1 to 3 do Ar[j,i]:=Koef(i,j)*AlAdd(i,j)/DetCount; { for i:=1 to 3 do begin for j:=1 to 3 do write(Ar[i,j],' '); writeln; end;} end; Function AllRight:boolean; begin writeln(f,'*Ґўп§Є Ї® 1-¬г н«-вг',(abs(U[1]-U1[1]))); writeln(f,'*Ґўп§Є Ї® 2-¬г н«-вг',(abs(U[2]-U1[2]))); writeln(f,'*Ґўп§Є Ї® 3-¬г н«-вг',(abs(U[3]-U1[3]))); writeln(F); if (abs(U[1]-U1[1])<0.001) and (abs(U[2]-U1[2])<0.001) and (abs(U[3]-U1[3])<0.001) then AllRight:=true else AllRight:=false end; Function Pow(par1:real;par2:byte):real; var S2:real; z:byte; begin S2:=1; if par2=0 then begin Pow:=1; exit end else for z:=1 to par2 do S2:=S2*par1; Pow:=S2; end; BEGIN clrscr; Assign(f,'c:\tikh.txt'); Rewrite(f); for i:=1 to 3 do for j:=1 to 3 do A[i,j]:=matrixA[i,j]; TransA; Det:=0.000125; {----------------------------} for i:=1 to 3 do begin S:=0; for j:=1 to 3 do begin S:=S+At[i,j]*U[j]; B[i]:=S end; end; {----------------------------} for i:=1 to 3 do for j:=1 to 3 do begin S:=0; for k:=1 to 3 do begin S:=S+At[i,k]*A[k,j]; A1[i,j]:=S end end; {-----------------------------} q:=1; repeat alpha:=q/pow(4,q); for i:=1 to 3 do for j:=1 to 3 do One1[i,j]:=One[i,j]*alpha; for i:=1 to 3 do for j:=1 to 3 do A2[i,j]:=One1[i,j]+A1[i,j]; RevMatr; {------------------------------} for i:=1 to 3 do begin S:=0; for j:=1 to 3 do begin S:=S+Ar[i,j]*B[j]; Z[i]:=S end; end; for i:=1 to 3 do begin S:=0; for j:=1 to 3 do begin S:=S+A[i,j]*Z[j]; U1[i]:=S end end; q:=q+1; until AllRight; {------------------------------} clrscr; writeln('ЏаЁЎ«Ё¦Ґ*ЁҐ Є *®а¬ «м*®¬г аҐиҐ*Ёо'); for i:=1 to 3 do writeln('Z(',i,')=',z[i]); writeln; writeln('‡* зҐ*ЁҐ Їа ў®© з бвЁ ЇаЁ Ї®¤бв *®ўЄҐ ЇаЁЎ«. аҐиҐ*Ёп'); for i:=1 to 3 do writeln('U1(',i,')=',U1[i]); writeln; writeln('‡* зҐ*ЁҐ Ї а ¬Ґва ॣг«паЁ§ жЁЁ:'); writeln(alpha); Close(f); readln; END. сама задача и решение тут:http://letitbit.net/download/fedbf2800813/-------.doc.html
Code: cur_lvl, new_lvl: integer; skills, abilitys: integer; cur_lvl := StrToInt(Edit1.Text); new_lvl := StrToInt(Edit2.Text); abilitys := (cur_lvl - new_lvl) * -1; skills := abilitys * 8; Думаю разберешся))
Помогите пожалуйста! - Дано число К и массив размером N. Найти два различный элемента массива сумма которых наиболее близка к числу К и вывестит эти элементы в порядке возрастания их индексов - Дан целочисленный массив размером N. Увеличить все четные числа содержащиеся в массиве на исходное значение первого четного числа. - Дан массив A, размером N и целое число k(1<=k<=4, k<N) осуществить циклический сдвиг элементов массива влево на k позиций при этом An перейдет в An-k; An-1 ->An-k-1; A1->An-k-1 Допускается использовать вспомогательный массив из 4 элементов. Зарание буду очень благодарен!
2 ne2pi >>- Дан целочисленный массив размером N. Увеличить все четные числа содержащиеся в массиве на исходное значение первого четного числа Code: #include<stdio.h> #include<conio.h> #include<stdlib.h> void main() { clrscr(); randomize(); int arr[100],n,f_ch; printf("Size of array : "); scanf("%d",&n); //заполнение массива случ числами, вывод printf("UcxogHbli MaccuB: \n"); for(int i=0; i<n; i++){ arr[i]=rand()%10; printf("%d ",arr[i]); } for(i=0; i<n; i++){ if(arr[i]%2==0&&arr[i]!=0){ //поиск 1-ого четного f_ch=arr[i]; printf("\n1 4eTHbli element - %d\n",f_ch); for( ; i<n; i++)//увелич всех четных чисел if(arr[i]%2==0) arr[i]+=f_ch; } } //вывод результата for(i=0; i<n; i++) printf("%d ",arr[i]); getch(); }
Кто может перепишите пожалуйста программу без структур а массивами Code: #include <stdio.h> #include <conio.h> #include <time.h> #include <math.h> #include <stdlib.h> // объявим структуру "точка" struct Scoord { double x; double y; }; //------------------ int main() { const int N = 10; // количество точек const double LMAX=-10, RMAX=10; // левая и правая границы для генерации координат const double TMAX=-10, BMAX=10; // верхняя и нижняя Scoord mas[N]; // массив точек int i,j,K; double S,Smin; srand(time(NULL)); for(i=0;i<N;i++) { // разбрасываем точки mas[i].x = rand()*(RMAX-LMAX)/(double)RAND_MAX+LMAX; mas[i].y = rand()*(BMAX-TMAX)/(double)RAND_MAX+TMAX; printf("To4ka %d: %5.3lf %5.3lf\n",i,mas[i].x,mas[i].y); } printf("\n"); //================== K = 0; // считаем, что вершина K - то, что нам нужно Smin = -1; for(i=0;i<N;i++) // перебираем все возможные "корни куста" { S = 0; // изначально сумма равна 0 for(j=0;j<N;j++) // перебираем вершины куста { if(j==i) continue; // если текущая вершина - корень, пропускаем S += pow( pow(mas[j].x-mas[i].x,2) + pow(mas[j].y-mas[i].y,2),0.5); } if(Smin==-1) // если мы еще пока ничего не запомнили... { Smin = S; // то запоминаем эту сумму K = i; // и номер вершины-корня } else { if(S<Smin) // иначе, если текущая сумма меньше { Smin = S; // запоминаем ее K = i; } } } //======= printf("Vershina kusta: %5.3lf %5.3lf\n", mas[K].x,mas[K].y); printf("Summa reber = %5.3lf\n", Smin); //--------- getch(); return 0; }
Меняешь структуру на массив, например int coord[2]; // тут лежит х и у Тогда массив структур будет выглядеть int pixels[10][2]; Code: for(i=0;i<N;i++) { // разбрасываем точки pixels[i][0] = rand()*(RMAX-LMAX)/(double)RAND_MAX+LMAX; // тут x pixels[i][1] = rand()*(BMAX-TMAX)/(double)RAND_MAX+TMAX; // тут у printf("To4ka %d: %5.3lf %5.3lf\n",i,pixels[i][0].pixels[i][1]); } И так далее.
Помогите с решением задачи на С# ООП. C# Отдел кадров в университете Разработать программу, реализующую справочник сотрудника отдела кадров. Университет состоит из факультетов, факультеты имеют в своем составе кафедры и студенческие группы. На каждой кафедра есть заведующий кафедрой. Некоторые кафедры являются профилирующими. Каждая группа имеет студента - старосту и профилирующую кафедру. Будем полагать, что в университете все люди являются преподавателями и/или студентами. Сведения о каждом человеке должны содержать – фамилия, имя, отчество, пол, паспортные данные, место проживания. Для студентов дополнительно должна быть информация о родителях и группе. Для преподавателей дополнительно должна быть информация о кафедре и должности. Предусмотреть возможную ситуацию, когда один и тот же человек может быть одновременно студентом, родителем и преподавателем. Один родитель может иметь несколько детей-студентов. Программа должна загружать справочник с жесткого диска, править все его данные, сохранять на диск. В процессе работы пользователь программы должен иметь возможность просмотра, как минимум, следующих параметров: Список всех студентов с возможностью сортировки по ФИО, факультету, группе, профилирующей кафедре. Список студентов, не имеющих родителей с возможностью сортировки по ФИО, факультету, группе, профилирующей кафедре. Список преподавателей с возможностью сортировки по ФИО, факультету, кафедре. Список всех заведующих кафедрами. Список всех групп без старост и кафедр без заведующих. Поиск у заданного родителя всех его детей – студентов. Список всех преподавателей, имеющих детей – студентов. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace new2 { public partial class Form1 : Form { IList<Ludi> list_ludi = new List<Ludi>(); public Form1() { InitializeComponent(); } private void button10_Click(object sender, EventArgs e) { dataGridView1.DataSource = null; } private void button2_Click(object sender, EventArgs e) { Init(); DataTable table1 = new DataTable(); DataColumn column_familia = new DataColumn("Familia", Type.GetType("System.String")); DataColumn column_imy = new DataColumn("Imy", Type.GetType("System.String")); DataColumn column_otchestvo = new DataColumn("Otchestvo", Type.GetType("System.String")); DataColumn column_pol = new DataColumn("Pol", Type.GetType("System.String")); DataColumn column_pasport = new DataColumn("Pasport", Type.GetType("System.String")); DataColumn column_prozivanie = new DataColumn("Prozivanie", Type.GetType("System.String")); table1.Columns.Add(column_familia); table1.Columns.Add(column_imy); table1.Columns.Add(column_otchestvo); table1.Columns.Add(column_pol); table1.Columns.Add(column_pasport); table1.Columns.Add(column_prozivanie); foreach (Ludi ludi in list_ludi) { DataRow new_row = table1.NewRow(); new_row["Familia"] = ludi.Familia; new_row["Imy"] = ludi.Imy; new_row["Otchestvo"] = ludi.Otchestvo; new_row["Pol"] = ludi.Pol; new_row["Pasport"] = ludi.Pasport; new_row["Prozivanie"] = ludi.Prozivanie; table1.Rows.Add(new_row); } dataGridView1.DataSource = table1; } private void Init() { // Список фамилий Random rand = new Random(); for (int i = 0; i < 40; i++) { Ludi new_student = new Ludi(); list_ludi.Add(new_student); } } } } Как правильно написать чтобы выводились различные букввы. Где список студентов.
#include <iostream> using namespace std; int main() { int n,temp; int* a; cin>>n; a=new int [n]; for (int i=0;i<n;i++) cin>>a; cin>>k; for (int i=0;i<k;i++) for (int j=0;j<(n-1);j++) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }; for (int i=0;i<n;i++) cout<<a<<" "; return 0; };