Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
aleksskay
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
#1

строки

30.08.2012, 13:49. Просмотров 561. Ответов 14
Метки нет (Все метки)

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
uses crt;
  type
  studrec=record
    group:string;// если написать сюда byte, то программа правильно работает, а таким образом со стрином нет
    surname:string[20];
    name:string[20];
    oc:array[1..3] of 2..5;
  end;
  foolsrec=record
    group:string;
    surname:string[20];
    name:string[20];
    average:real;
  end;
  filetyp1=file of studrec;
  filetyp2=file of foolsrec;
  var
    f1:filetyp1;
    f2:filetyp2;
    namefile1, namefile2:string[12];
    s:studrec;
    fs:foolsrec;
    i, nomrec:integer;
 
  Procedure readdata(var s:studrec);
  begin
    with s do  begin
      writeln('Okanchanie vvoda -0 kak n gruppi');
      write('N gruppi:');
      readln(group);
      if group <> '0' then
      begin
        write('Familiya:');
        readln(surname);
        write('Imya');
        readln(name);
        writeln('Ocenki: ');
        for i:=1 to 3 do
        read(oc[i]);
      end;
    end;
  end;
 
  Procedure copydata(s:studrec; var fs:foolsrec);
  begin
    with fs do  begin
      group:=s.group;
      surname:=s.surname;
      name:=s.name;
      average:=(s.oc[1]+s.oc[2]+s.oc[3])/3;
    end;
  end;
 
  Procedure writelist(var f:filetyp2);
  begin
    reset(f);
    seek(f,0);
    writeln('Ploho uspevayushie :');
    writeln('Gruppa ','Familiya':16, 'imya':8,'sredniy ball':18);
    while not Eof(f) do
    begin
      read(f, fs);
      with fs do
      writeln(group:4, surname:15, name:10, average:16:2);
    end;
    close(f);
  end;
 
  Procedure createfile(var f:filetyp1; var n:integer);
  begin
    n:=0;
    rewrite(f);
    readdata(s);
    while s.group <> '0' do
    begin
      write(f,s);
      inc(n);
      readdata(s);
    end;
    close(f);
  end;
 
  Procedure writedata(var f1:filetyp1; var f2:filetyp2;n:integer);
  var
    priz:char;
    k:integer;
  begin
    reset(f1);
    rewrite(f2);
    k:=0;
    while not Eof(f1) do
    begin
      read(f1, s);
      priz:='n';
      for i:=1 to 3 do
      if (s.oc[i] >= 2)  and (s.oc[i] <= 3)  then priz:='y';
      if priz = 'y' then
      begin
         copydata(s,fs);
         write(f2,fs)
      end
      else
        inc(k);
    end;
    close(f1);
    close(f2);
    clrscr;
    writeln('Na "4" i "5" uchatsya ',k/n*100:3:0,'%studentov');
  end;
 
  begin
    clrscr;
    write('Vvedite imya fila obshey vedomosty');
    readln(namefile1);
    Assign(f1, namefile1);
    createfile(f1, nomrec);
    write('Vvedite imya fila vedomosti zadolgnika: ');
    readln(namefile2);
    assign(f2,namefile2);
    writedata(f1 , f2, nomrec);
    writelist(f2);
  end.
результат работы
Vvedite imya fila obshey vedomostyread
Okanchanie vvoda -0 kak n gruppi
N gruppi:1
Familiya:red
Imyafs
Ocenki:
3
3
3
Okanchanie vvoda -0 kak n gruppi
N gruppi:Familiya:

когда написано стрин то при вводе данных для второго студента как показано выше сразу же
появляется N gruppi:Familiya: а не последовательно и таким образом я не могу ввести N gruppi для второго студента
! в чем причина ?
Программа определяет процент успеваемости студентов на 4 и 5 и сообщает о плохо успевающих студентах
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2012, 13:49
Ответы с готовыми решениями:

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках.
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие...

Строки. Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1
Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1.В...

Строки. Даны строки S и So. Найти количество вхождений строки So в строку S
Помогите пожалуйста, как сделать эту задачу без этих вот строчек... B:=TRUE; и...

Слить две строки, вставив символы одной строки между символами другой строки
Строка a из n символов лексикографически меньше строки b из n символов, если...

14
Puporev
Модератор
54349 / 41942 / 28977
Регистрация: 18.05.2008
Сообщений: 98,788
30.08.2012, 13:52 #2
Цитата Сообщение от aleksskay Посмотреть сообщение
строки
Во-первых это тема на записи?
А во-вторых в чем прикол?
0
aleksskay
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
30.08.2012, 16:50  [ТС] #3
я же выше объяснил, если group из записи studrec сделать переменной string так же как написано выше, то при вводе данных для второго студента происходит это

результат работы
Vvedite imya fila obshey vedomostyread
Okanchanie vvoda -0 kak n gruppi
N gruppi:1
Familiya:red
Imyafs
Ocenki:
3
3
3
Okanchanie vvoda -0 kak n gruppi
N gruppi:Familiya:

я тут ввел данные для первого студента, а потом перешел к второму и тогда я не могу ввести
номер группы так как сразу появляется "Familiya:" -это:
Okanchanie vvoda -0 kak n gruppi
N gruppi:Familiya:
0
Puporev
Модератор
54349 / 41942 / 28977
Регистрация: 18.05.2008
Сообщений: 98,788
30.08.2012, 16:53 #4
Цитата Сообщение от aleksskay Посмотреть сообщение
я же выше объяснил,
Когда тема была создана там ничего не было, зато была еще одна тема с тем же названием, ее я удалил.
0
aleksskay
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
31.08.2012, 12:29  [ТС] #5
может кто-нибудь да что-нибудь скажет
0
Reveng
420 / 420 / 338
Регистрация: 25.06.2012
Сообщений: 666
Завершенные тесты: 1
31.08.2012, 12:45 #6
Цитата Сообщение от aleksskay Посмотреть сообщение
я тут ввел данные для первого студента, а потом перешел к второму и тогда я не могу ввести
номер группы так как сразу появляется "Familiya:" -это:
Если я понял суть проблемы:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Procedure readdata(var s:studrec);
  begin
    with s do  
   begin
      writeln('Okanchanie vvoda -0 kak n gruppi');
      write('N gruppi:');
      readln(group);
      if group <> '0' then
      begin
        write('Familiya:');
        readln(surname);
        write('Imya');
        readln(name);
        writeln('Ocenki: ');
        for i:=1 to 3 do
        read(oc[i]);
        Readln;
      end;
    end;
  end;
1
CodeR
Фрилансер
3379 / 2781 / 2999
Регистрация: 08.02.2012
Сообщений: 6,688
Записей в блоге: 1
31.08.2012, 12:56 #7
Reveng, Может объяснишь почему один добавленный
Pascal
1
Readln;
спас ситуацию?Я че то понять не могу...пытался исправить но не смог
0
Reveng
420 / 420 / 338
Регистрация: 25.06.2012
Сообщений: 666
Завершенные тесты: 1
31.08.2012, 13:02 #8
Artem7, Честно, не знаю. Бывало такое и у меня, вот Readln спасал.
1
Puporev
Модератор
54349 / 41942 / 28977
Регистрация: 18.05.2008
Сообщений: 98,788
31.08.2012, 13:23 #9
Не понял в чем вопрос, у меня работает нормально, ввожу номер группы, фамилию, имя, оценки, предлагает ввести второго, ввожу, предлагает следующего.
Если ввожу номер группы 0, то предлагает ввести имя второго файла.
Естественно не ввожу 0 для первого.
1
CodeR
Фрилансер
3379 / 2781 / 2999
Регистрация: 08.02.2012
Сообщений: 6,688
Записей в блоге: 1
31.08.2012, 13:25 #10
Puporev, пробовал у себя у меня так же после ввода данных первого студента выходит
Okanchanie vvoda -0 kak n gruppi
N gruppi:Familiya:
1
Puporev
Модератор
54349 / 41942 / 28977
Регистрация: 18.05.2008
Сообщений: 98,788
31.08.2012, 13:32 #11
Вот я проверял в АВС
0
Миниатюры
строки  
CodeR
Фрилансер
3379 / 2781 / 2999
Регистрация: 08.02.2012
Сообщений: 6,688
Записей в блоге: 1
31.08.2012, 13:35 #12
Цитата Сообщение от Puporev Посмотреть сообщение
Вот я проверял в АВС
А раздел то турбо...
Ну в общем вот
0
Миниатюры
строки  
Puporev
Модератор
54349 / 41942 / 28977
Регистрация: 18.05.2008
Сообщений: 98,788
31.08.2012, 13:38 #13
А в Турбо нужно как и предлагал Reveng
Pascal
1
2
3
4
writeln('Ocenki: ');
        for i:=1 to 3 do
        read(oc[i]);
        Readln;
Добавлено через 46 секунд
Вводим 3 оценки через пробел и жмем Enter.

Добавлено через 1 минуту
или
Pascal
1
2
3
writeln('Ocenki: ');
        for i:=1 to 3 do
        readln(oc[i]);
Enter после каждой
0
aleksskay
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
31.08.2012, 18:53  [ТС] #14
и что мне придется писать два readln? -это, что за бардак и почему так происходит, среда виновата?
0
Puporev
Модератор
54349 / 41942 / 28977
Регистрация: 18.05.2008
Сообщений: 98,788
31.08.2012, 20:03 #15
Цитата Сообщение от aleksskay Посмотреть сообщение
и что мне придется писать два readln?
Это в каком смысле? Если 2 раза в программе, то ничего страшного, если лень писать 2 раза, пишите так
Pascal
1
2
for i:=1 to 3 do
readln(oc[i]);
А можете вообще не писать, что за претензии? Нам Ваш код и нафиг не загнулся...
0
31.08.2012, 20:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2012, 20:03

Строки. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки.
Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов....

Строки. Из строки символов удалить символы, отличных от русских букв и пробелов
Задана строка из произвольного количества слов, разделенных пробелами. Из...

Поменять все элементы 5 строки матрицы на удвоенное значение элементов 1 строки
Поменять местами все элементы 5 строки на удвоенное значение элементов 1...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru