
31.03.2009, 20:53
|
|
Постоянный
Регистрация: 16.04.2008
Сообщений: 889
С нами:
9510146
Репутация:
1550
|
|
2.
Код:
s:=0;
for i:=20 to 40
begin
cube:=sqr(i)*i;
s:=s+cube;
end;
|
|
|

01.04.2009, 02:54
|
|
Новичок
Регистрация: 22.03.2009
Сообщений: 3
С нами:
9021264
Репутация:
0
|
|
Здравствуйте ребята, мне нужна помощь по лабораторной работе
Реализовать игру «Гонки» на 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 - принять выбранную скорость и сделать ход. В центре располагается стрелка, которая показывает направление и величину текущей скорости машины.
Программа обязательно должна быть реализована по модульному принципу. Каждая подзадача реализуется в виде отдельной функции или процедуры, имеющей соответствующее решаемой задаче название и список параметров и пригодной для адекватного использования в других программах. Размер подпрограмм должен быть как можно меньше: количество команд в теле каждой процедуры или функции - от одной до семи.
Последний раз редактировалось Ajax5; 01.04.2009 в 02:56..
|
|
|

01.04.2009, 15:26
|
|
Новичок
Регистрация: 23.03.2009
Сообщений: 11
С нами:
9018802
Репутация:
0
|
|
Помогите с прогой на С++
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
|
|
|

01.04.2009, 17:00
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
С нами:
9394886
Репутация:
1467
|
|
Сообщение от WeReWoLf777
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
эт на курсовую тянет) у меня в восьмом классе такая тема на паскале была.
что отдаётся программе и что она возвращает?
координаты всех ферзей? 
|
|
|

01.04.2009, 17:55
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
С нами:
9391926
Репутация:
234
|
|
Сообщение от WeReWoLf777
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
Читать
+ исходник на С:
Код:
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-- ; /* уменьшаем счетчик строк, пробуем следующую комбинацию */
}
Последний раз редактировалось jawbreaker; 01.04.2009 в 17:59..
|
|
|

01.04.2009, 18:05
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
С нами:
9394886
Репутация:
1467
|
|
Код 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;
}
прогу писал давно - так что щас не думал, просто перевёл с одного языка на другой.
исходник. нужно только скомпилировать и запустить)
|
|
|

01.04.2009, 17:06
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
С нами:
9394886
Репутация:
1467
|
|
ну мой вариант выводил все варианты таких расстановок.
вот. я писал на паскале и было это 2 года назад=)
но щас вспомню и быстренько сделаю на cpp
К вечеру нормально будет?)
|
|
|

01.04.2009, 17:15
|
|
Новичок
Регистрация: 23.03.2009
Сообщений: 11
С нами:
9018802
Репутация:
0
|
|
да норм спс
|
|
|

01.04.2009, 17:18
|
|
Новичок
Регистрация: 23.03.2009
Сообщений: 11
С нами:
9018802
Репутация:
0
|
|
прога сама должна расположить 8 ферзей на шахматной доске.
|
|
|

01.04.2009, 18:10
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
С нами:
9443906
Репутация:
3313
|
|
KaZ@NoVa, как тебе не стыдно?
http://www.codenet.ru/progr/alg/ferzi.php
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|