Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Помогите с тренажёрам для тренеровки памяти на PAS

Автор: Wolf 7.04.2003 19:29

Помогите с тренажёрам для тренеровки памяти на PASCAL ???

Автор: ozzy 9.04.2003 14:58

Расскажите более подробно, пожалуйста. Что имеется ввиду под тренировкой памяти?

Автор: Wolf 10.04.2003 7:31

Просто задали написать на Pascal какую нибудь прогу для тренировки памяти, причем тип её определяется студентом. Вот я и не знаю как это сделать.

Автор: ozzy 10.04.2003 8:05

1. Тренировка памяти на цвет, форму, количество геометрических фигур.
2. Тренировка памяти на слова, числа.
Всё достаточно просто реализуется. Вам нужно идеи или готовые программы?

Автор: AlaRic 10.04.2003 14:26

Подаем идеи, если человек не справляется - программы или примеры!

Автор: Wolf 11.04.2003 7:06

Мне нужны исходники, хоть это и просто, но я не совсем дружу с PASCALем и это вызывает трудности. Поэтомы если вам не трудно отправте мне её, мне подойдёт любой тренажёр.

Автор: GLuk 11.04.2003 9:15

А поисковиками не пробовал пользоваться - говорят помогает... >:(

http://pascal.sources.ru/games/quad.zip

Автор: ozzy 11.04.2003 11:47

Uses Crt;
Const
 MaxNumbers = 5;
Var
 Numbers  : Array [1..MaxNumbers] of Integer;
 Numbers2 : Array [1..MaxNumbers] of Integer;
 ErrorsA  : Array [1..MaxNumbers] of Integer;
 i        : Integer;
 TempStr  : String;
 S        : String;
 DelTime  : Integer;
 CurrN    : Integer;
 Errors   : Integer;
 Diff     : Integer;
 Sum      : Real;
Begin
 CurrN:=1;
 DelTime:=MaxNumbers*1000;
 Diff:=100;
 Randomize;
 For i:=1 to MaxNumbers-CurrN do
   ErrorsA[i]:=0;
 While CurrN<=MaxNumbers do
 begin
 ClrScr;
 TempStr:='';
 S:='';
 for i:=1 to CurrN do
   begin
     Numbers[i]:=Random(Diff);
     Str(Numbers[i],TempStr);
     S:=S+TempStr+' ';
   end;
 GotoXY(1,1);
 Writeln(DelTime div 1000,' секунд на выполнение задания!');
 GotoXY(39-Length(s) div 2,12);
 Writeln(s);
 Delay(DelTime);
 ClrScr;
 Errors:=0;
 for i:=1 to CurrN do
   begin
     WriteLn('Введите ',i,' число: ');
     ReadLn(Numbers2[i]);
   end;
 for i:=1 to CurrN do
   begin
     if Numbers2[i]<>Numbers[i] then
       Errors:=Errors+1;
   end;
 WriteLn('Ошибок допущено: ',Errors);
 ErrorsA[CurrN]:=Round(Errors/CurrN*100);
 WriteLn('Процент допущенных ошибок : ',ErrorsA[CurrN],'%');
 { Увеличиваем количество чисел }
 CurrN:=CurrN+1;
 { Уменьшаем время примерно на 1 сек. }
 DelTime:=DelTime-1000;
 { Увеличиваем числа }
 Diff:=Diff+100;
 ReadLn;
 end;
 Sum:=0;
 For i:=1 to MaxNumbers do
   Sum:=Sum+ErrorsA[i];
 Sum:=Sum/MaxNumbers;
 WriteLn('Средний процент ошибок в выполненых заданиях = ',Round(sum),'%');
 ReadLn;
End.

Автор: Wolf 11.04.2003 19:38

Спасибо огромное - очень выручили.

Автор: Wolf 12.04.2003 6:02

Я вот только не понял, что делает данная программа.

Автор: ozzy 12.04.2003 8:38

Моя?
Выводит на экран n-ное количество случайных чисел, выжидает некоторое время, просит ввести их.  И идет проверка. Затем время их показа на экране уменьшается, количество чисел увеличивается, сами числа тоже.
В конце работы программы выводится ср. процент ошибок.

Автор: Wolf 12.04.2003 19:51

У меня почему-то она сразу запрашивает первое число, вводишь его она говорит, что ошибок одна, процент сто, при втором обращении она запрашивает уже прервое и второе и опять ошибок две, процент ошибок сто и так до пяти.

Автор: ozzy 14.04.2003 7:47

Немножко подправил: Там стоял лишний readln
Uses Crt;
Const
 MaxNumbers = 5;
Var
 Numbers  : Array [1..MaxNumbers] of Integer;
 Numbers2 : Array [1..MaxNumbers] of Integer;
 ErrorsA  : Array [1..MaxNumbers] of Integer;
 i   : Integer;
 TempStr  : String;
 S   : String;
 DelTime  : Integer;
 CurrN    : Integer;
 Errors   : Integer;
 Diff     : Integer;
 Sum : Real;
Begin
 CurrN:=1;
 DelTime:=MaxNumbers*1000;
 Diff:=100;
 Randomize;
 For i:=1 to MaxNumbers-CurrN do
   ErrorsA[i]:=0;
 While CurrN<=MaxNumbers do
 begin
 ClrScr;
 TempStr:='';
 S:='';
 for i:=1 to CurrN do
   begin
Numbers[i]:=Random(Diff);
Str(Numbers[i],TempStr);
S:=S+TempStr+' ';
   end;
 GotoXY(1,1);
 Writeln(DelTime div 1000,' секунд на выполнение задания!');
 GotoXY(39-Length(s) div 2,12);
 Writeln(s);
 Delay(DelTime);
 ClrScr;
 Errors:=0;
 for i:=1 to CurrN do
   begin
WriteLn('Введите ',i,' число: ');
ReadLn(Numbers2[i]);
   end;
 for i:=1 to CurrN do
   begin
if Numbers2[i]<>Numbers[i] then
  Errors:=Errors+1;
   end;
 WriteLn('Ошибок допущено: ',Errors);
 ErrorsA[CurrN]:=Round(Errors/CurrN*100);
 WriteLn('Процент допущенных ошибок : ',ErrorsA[CurrN],'%');
 { Увеличиваем количество чисел }
 CurrN:=CurrN+1;
 { Уменьшаем время примерно на 1 сек. }
 DelTime:=DelTime-1000;
 { Увеличиваем числа }
 Diff:=Diff+100;
  WriteLn('Нажмите любую клавишу: ');
 ReadKey;

 end;
 Sum:=0;
 For i:=1 to MaxNumbers do
   Sum:=Sum+ErrorsA[i];
 Sum:=Sum/MaxNumbers;
 WriteLn('Средний процент ошибок в выполненых заданиях = ',Round(sum),'%');
 ReadLn;
End.  

Автор: Wolf 15.04.2003 6:12

Мне кажется, что в этой программе нужно увеличить задержку появляющегося числа, потому как слишком быстро появляются и исчезают числа, но всё равно спасибо.

Автор: Clane 15.04.2003 18:36

Цитата
Мне кажется, что в этой программе нужно увеличить задержку появляющегося числа, потому как слишком быстро появляются и исчезают числа, но всё равно спасибо.

Процедура Delay(N) тебе поможет ! N - количество миллисекунд..