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

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

Форум «Всё о Паскале» _ Задачи _ Задачи, в них есть не точность, помогите исправить

Автор: Geroi 5.05.2003 21:35

1) "Файл f содержит записи следующей структуры:
- имя студента;
- пол;
- рост;
- оценки по трем экзаменам.
Написать функцию TASK_3_1 (f), проверяющую, есть ли среди юношей отличники."
Вот решение этой задачи:

Код
uses wincrt;
type student=record name:string[11];
                   male:char;    {ж - жен, м - муж}
                   height:byte;
                   marks:array[1..3] of 2..5;
             end;
    myfile=file of student;
var  f:myfile;
    vova:student;
    var i,j:byte;
procedure input(var f:myfile);
begin
    assign(f,'C:stud.txt');
    rewrite(f);
    for i:=1 to 3 do
    begin
        with vova do
        begin
                  write('Введите фамилию студента: ');
                  readln(name);
                  write('Введите пол студента (м или ж): ');
                  readln(male);
                  write('Введите рост студента: ');
                  readln(height);
                  for j:=1 to 3 do
                  begin
                       write('Введите оценку по ',j,'ому предмету: ');
                       readln(marks[j])
                  end
        end;
    write(f,vova)
    end;
    close(f)
end;
procedure task_3_4(var f:myfile);
var ocenka,k:byte;
begin
    reset(f);
    ocenka:=0;
    for i:=1 to 2 do
    begin
         with vova do
         begin
              k:=0;
              read(f,vova);
              for j:=1 to 3 do
              begin
                     if (marks[j]=4) or (marks[j]=5) then
                   begin
                        inc(k)
                   end;      end;
              if k=3 then
                 writeln('---> ',name,' имеет положительные оценки ')
              else
              inc(ocenka)
          end
    end;
    if ocenka=2 then
       writeln('---> Студентов с положительными оценкам нет');
    close(f)
end;
begin
    input(f);
    task_3_4(f)
    end.

В этой задаче когда вводишь данные : отличник, троешник, отличник, Он выводит первого отличника, а третьего не выводит. !!!!! и ещё есть некторые случаи.!
Тут где-то явно маленький касяк. Посмотрите пожалуйста, подскажите.

Автор: Geroi 5.05.2003 21:44

Вот вторая:

Код
{Задача 3. Задан текстовый файл 'a.txt'. Написать программу, которая утраивает значения слов, являющиеся четными числами.}
 uses wincrt;
 type myfile=text;
 var  f,f1:myfile;
     i,k:byte;
     w,c:integer;
     ch:string;
     erccode:integer;
 begin
    assign(f,'C:kontrolX1.txt');
    reset(f);  {открываем для решения}
    Assign(f1,'C:kontrolX2.txt');
    Rewrite(f1);
    while not seekeof(f) do  {не конец файла}          {seek}
          while not seekeoln(f) do {не конец строки}    {----}
          begin
               read(f,ch);   {readln}
               k:=0;
               for i:=1 to length{длина строки}(ch) do
                   if (ch[i] in ['0'..'9']) then
                      inc(k);
               if k=length(ch) then
               begin
                    val(ch,c,erccode);
                    if c mod 2=0 then
                       c:=3*c;
                    str(c,ch);
                    writeLn(f1,ch)
               end
               else
                    writeLn(f1,ch)
          end;
    close(f);
    close(f1);
    erase(f);
    rename(f1,'c:kontrolX.txt')
 end.

Она работает только тогда, когда вводишь одно число в строке, и потом enter, а если введешь два числа или более, она не пашет, как сделать??!?!?!?!? Помогите пацаны, завтра сдавать.!

Автор: ___ALex___ 5.05.2003 23:38

А тебе её по-моему уже Ivs писал!?
Там всё правильно было!И нет никакого условия типа что надо использовать только один файл. Так что оно "покатит"!(решение)
а на счёт первой проги ты там сильно мудришь всё проще

Автор: Geroi 6.05.2003 9:42

да с первой вродене ничё токого, сначало вводишь данные, потом проверяешь. Только там касяк есть...... блинзапустили бы посмотрели хоть, первую sad.gif

Автор: ___ALex___ 6.05.2003 9:50

сегодня посмотрю

Автор: Geroi 6.05.2003 10:33

да Я уже через час понесу сдавать sad.gif
чему быть, тому не миновать.
А задача Ivs вроде правильная...

Автор: Geroi 6.05.2003 10:50

По первой задаче вопрос исчерпан, нашёл касяк smile.gif
Ща буду с Ивса задачей разбираться, но касяк когда Я её токо запускаю, он мне выдаёт ошибку, как бы в отдельном окне и там пишет :
"Error, потом на след. строчке, Runtime error 002 at 0001:0045."
Чё делать? smile.gif

Автор: ___ALex___ 6.05.2003 15:40

файл "a.txt" сначала создай и напиши туда что-нибудь

Автор: Ivs 6.05.2003 21:15

Цитата
файл "a.txt" сначала создай и напиши туда что-нибудь

Это точно... или ты что, хочеш чтобы прога сама создавала файл, писАла туда чего-нибудь, и выдавала правильные результаты, это конечно было бы неплохо, но увы и ах......

Автор: Geroi 6.05.2003 23:19

Ивс всё ок, просто сначала не разобрался и начал пороть гарячку. Всё оки, рабоает, уже посдавал.
Всем спасибо.!