2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
1

Помогите найти ошибку

29.11.2013, 20:55. Показов 453. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
type
  Student = record
    name: string;
    age: integer;
    group: string;
  end;
 
label nach;
var
  str, vr: string;
  info: file;
  a: integer;
  st: student;
  rorw: char;
 
begin
  nach:
  assign(info, 'info.txt');
  writeln('Чтение журнала или запись? (Чтение/Запись)');
  readln(rorw);
  case rorw of
    'Ч': 
      begin
        reset(info);
        writeln('Возраст:   Группа:   Имя: ', filesize(info));
        repeat
          read(info, st);
          write(st.age:8);
          write(st.group:7);
          writeln(st.name:12);
        until eof(info) = false
      end;
    'З':
      begin
        assign(info, 'info.txt');
        rewrite(info);
        repeat
          begin
            write('Введите возраст учащегося: ');
            readln(st.age);
            write('Введите группу учащегося: ');
            readln(st.group);
            write('Введите имя учащегося: ');
            readln(st.name);
            writeln('Завершить? (Да/Нет)');
            readln(vr);
            write(info, st);
          end;
        until vr = 'Да';
        close(info);
      end;
  end;
  writeln('Завершить программу? (Да/Нет)');
  readln(vr);
  if vr = 'Нет' then  goto nach else exit;
end.
В файл записывается только одна строка (или читается), как это исправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2013, 20:55
Ответы с готовыми решениями:

Помогите найти ошибку
Помогите пожалуйста отыскать ошибку в программе УСЛОВИЕ: Необходимо протабулировать функцию с...

Помогите найти ошибку в коде
вот программа: program modullab23; uses crt, SaveFamGroup23; type mas=array of real; var...

Помогите найти ошибку в программе и исправить её
Program Monte_Carlo; uses crt; var n,i,j,alfa:integer;...

Помогите найти ошибку в программе и исправить ее
program laba5; uses wincrt; var t:string; w,max,i,n:byte; begin writeln('Vvodim stroku');...

7
0 / 0 / 3
Регистрация: 29.11.2013
Сообщений: 11
29.11.2013, 22:01 2
В файл записывается СТРУКТУРА (запись), а не строчки.
0
2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
29.11.2013, 22:02  [ТС] 3
Цитата Сообщение от divix Посмотреть сообщение
В файл записывается СТРУКТУРА (запись), а не строчки.
Как это реализовать?
0
0 / 0 / 3
Регистрация: 29.11.2013
Сообщений: 11
29.11.2013, 22:08 4
Цитата Сообщение от Vol4_OK Посмотреть сообщение
Как это реализовать?
Это уже реализовано и поэтому в файле такая вот непонятная вещь (кстати, я надеюсь что для просмотра файла ты используешь не стандартный блокнот Windows).
Если хочешь, чтобы записывалось в читаемом виде (по строчкам), то нужно записывать все строчки, т.е. Writeln(file, 'Строка1'); Writeln(file, 'Строка2); и читать из файла также (вообще, есть принцип - как писал в файл, так и читай из него) - Readln(file, str1); Readln(file, str2);
0
2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
29.11.2013, 22:45  [ТС] 5
В типизированном файле нету строк, мне нужно, что-бы выводилось столько данных, сколько я ввёл.
0
0 / 0 / 3
Регистрация: 29.11.2013
Сообщений: 11
29.11.2013, 23:10 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
type
  Student = record
    name, group:string;
    age:integer;
  end;
  
var
  st:Student;
  f:file;
  str:string;
  i:integer;
begin
  repeat
    assign(f, 'info.txt');
    reset(f);
    
    Writeln('1. Чтение');
    Writeln('2. Запись');
    Readln(i);
    case i of
      1:
      begin  
        Read(f, st);
        Writeln('Имя студента: ', st.name);
        Writeln('Группа студента: ', st.group);
        Writeln('Возраст студента: ', st.age);
      end;
      2:
      begin
        Writeln('Введите данные для записи:');
        
        Write('Имя студента: ');
        Readln(str);
        st.name:=str;
        
        Write('Группа студента: ');
        Readln(str);
        st.group:=str;
        
        Write('Возраст студента: ');
        Readln(i);
        st.age:=i;
        
        Write(f, st);
        Writeln('Студент добавлен!');
      end;
    end;
    
    Close(f);
  
    Writeln('Завершить программу(Да/Нет)?');
    Readln(str);
  until str = 'Да';
end.
Добавлено через 8 минут
Эм.. Вот немного переделанный код (для нормального добавления):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
type
  Student = record
    name, group:string;
    age:integer;
  end;
  
var
  st:Student;
  f:file;
  str:string;
  i:integer;
begin
  repeat    
    assign(f, 'info.txt');
    reset(f);
    
    Writeln('1. Чтение');
    Writeln('2. Запись');
    Readln(i);
    
    case i of
      1:
      begin
        while not eof(f) do
        begin
          Read(f, st);
          Writeln('Имя студента: ', st.name);
          Writeln('Группа студента: ', st.group);
          Writeln('Возраст студента: ', st.age);
          Writeln();
        end;
      end;
      2:
      begin
        Seek(f, FileSize(f));
        Writeln('Введите данные для записи:');
        
        Write('Имя студента: ');
        Readln(str);
        st.name:=str;
        
        Write('Группа студента: ');
        Readln(str);
        st.group:=str;
        
        Write('Возраст студента: ');
        Readln(i);
        st.age:=i;
        
        Write(f, st);
        Writeln('Студент добавлен!');
      end;
    end;
    Close(f);
  
    Writeln('Завершить программу(Да/Нет)?');
    Readln(str);
  until str = 'Да';
end.
0
2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
30.11.2013, 07:47  [ТС] 7
Цитата Сообщение от divix Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
type
  Student = record
    name, group:string;
    age:integer;
  end;
  
var
  st:Student;
  f:file;
  str:string;
  i:integer;
begin
  repeat
    assign(f, 'info.txt');
    reset(f);
    
    Writeln('1. Чтение');
    Writeln('2. Запись');
    Readln(i);
    case i of
      1:
      begin  
        Read(f, st);
        Writeln('Имя студента: ', st.name);
        Writeln('Группа студента: ', st.group);
        Writeln('Возраст студента: ', st.age);
      end;
      2:
      begin
        Writeln('Введите данные для записи:');
        
        Write('Имя студента: ');
        Readln(str);
        st.name:=str;
        
        Write('Группа студента: ');
        Readln(str);
        st.group:=str;
        
        Write('Возраст студента: ');
        Readln(i);
        st.age:=i;
        
        Write(f, st);
        Writeln('Студент добавлен!');
      end;
    end;
    
    Close(f);
  
    Writeln('Завершить программу(Да/Нет)?');
    Readln(str);
  until str = 'Да';
end.
Добавлено через 8 минут
Эм.. Вот немного переделанный код (для нормального добавления):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
type
  Student = record
    name, group:string;
    age:integer;
  end;
  
var
  st:Student;
  f:file;
  str:string;
  i:integer;
begin
  repeat    
    assign(f, 'info.txt');
    reset(f);
    
    Writeln('1. Чтение');
    Writeln('2. Запись');
    Readln(i);
    
    case i of
      1:
      begin
        while not eof(f) do
        begin
          Read(f, st);
          Writeln('Имя студента: ', st.name);
          Writeln('Группа студента: ', st.group);
          Writeln('Возраст студента: ', st.age);
          Writeln();
        end;
      end;
      2:
      begin
        Seek(f, FileSize(f));
        Writeln('Введите данные для записи:');
        
        Write('Имя студента: ');
        Readln(str);
        st.name:=str;
        
        Write('Группа студента: ');
        Readln(str);
        st.group:=str;
        
        Write('Возраст студента: ');
        Readln(i);
        st.age:=i;
        
        Write(f, st);
        Writeln('Студент добавлен!');
      end;
    end;
    Close(f);
  
    Writeln('Завершить программу(Да/Нет)?');
    Readln(str);
  until str = 'Да';
end.
Вы проверяли код? Он выдаёт ошибку: Нельзя читать после конца файла.
0
0 / 0 / 3
Регистрация: 29.11.2013
Сообщений: 11
04.12.2013, 19:57 8
Цитата Сообщение от Vol4_OK Посмотреть сообщение
Вы проверяли код? Он выдаёт ошибку: Нельзя читать после конца файла.
Программа работает, ошибки нету. Может старый файл не удален?
0
04.12.2013, 19:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2013, 19:57
Помогаю со студенческими работами здесь

Помогите найти ошибку,не выводит группы с отличниками
помогите найти ошибку,не выводит группы с отличниками uses crt; type student=record...

Вывести все трехзначные числа которые делятся и на 3 и на 5 и на 6. Помогите найти ошибку
uses crt; var a: array of integer; i: integer; begin for i:=100 to 999 do begin ...

Программа пишет ошибку!! Помогите найти ошибку
Program Summa; var i, N, M: integer; begin Writeln ('Введите значение N:'); Read (N); ...

помогите найти ошибку
Дана последовательность действительных чисел a1, a2, ..., an. Найдите сумму первых чисел,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru