Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с тренажёрам для тренеровки памяти на PAS
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Wolf
Помогите с тренажёрам для тренеровки памяти на PASCAL ???
ozzy
Расскажите более подробно, пожалуйста. Что имеется ввиду под тренировкой памяти?
Wolf
Просто задали написать на Pascal какую нибудь прогу для тренировки памяти, причем тип её определяется студентом. Вот я и не знаю как это сделать.
ozzy
1. Тренировка памяти на цвет, форму, количество геометрических фигур.
2. Тренировка памяти на слова, числа.
Всё достаточно просто реализуется. Вам нужно идеи или готовые программы?
AlaRic
Подаем идеи, если человек не справляется - программы или примеры!
Wolf
Мне нужны исходники, хоть это и просто, но я не совсем дружу с PASCALем и это вызывает трудности. Поэтомы если вам не трудно отправте мне её, мне подойдёт любой тренажёр.
GLuk
А поисковиками не пробовал пользоваться - говорят помогает... >:(

http://pascal.sources.ru/games/quad.zip
ozzy
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
Спасибо огромное - очень выручили.
Wolf
Я вот только не понял, что делает данная программа.
ozzy
Моя?
Выводит на экран n-ное количество случайных чисел, выжидает некоторое время, просит ввести их.  И идет проверка. Затем время их показа на экране уменьшается, количество чисел увеличивается, сами числа тоже.
В конце работы программы выводится ср. процент ошибок.
Wolf
У меня почему-то она сразу запрашивает первое число, вводишь его она говорит, что ошибок одна, процент сто, при втором обращении она запрашивает уже прервое и второе и опять ошибок две, процент ошибок сто и так до пяти.
ozzy
Немножко подправил: Там стоял лишний 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
Мне кажется, что в этой программе нужно увеличить задержку появляющегося числа, потому как слишком быстро появляются и исчезают числа, но всё равно спасибо.
Clane
Цитата
Мне кажется, что в этой программе нужно увеличить задержку появляющегося числа, потому как слишком быстро появляются и исчезают числа, но всё равно спасибо.

Процедура Delay(N) тебе поможет ! N - количество миллисекунд..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.