Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 4

Некорректный вывод стипендии на экран

11.06.2014, 02:30. Показов 506. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задачка:
Створити текстовий файл, що містить зведення про здачу студентами першого курсу сесії. Структура запису – індекс групи, прізвище студента, оцінки по п'ятьох іспитах, ознака участі в суспільній роботі: "1" – активна участь, "0" – неучасть. Кількість записів – довільна. Зарахувати окремого студента або всіх студентів групи Х на стипендію. Студент, що одержав всі оцінки "5" і активно бере участь у суспільній роботі, зараховується на підвищену стипендію (доплата 50 %), не активно бере участь – доплата 25 %. Студенти, що одержали "4" і "5" , зараховуються на звичайну стипендію. Студент, що одержав одну оцінку "3", але активно займався суспільною роботою, також зараховується на стипендію, у протилежному випадку зарахування не відбувається. Індекс групи або прізвище студента вводиться з термінала (синтаксичний аналізатор).
Есть решение
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
uses crt;
 
Type student=record
     fio:string;
     index1:string;
     uchastie,i:byte;
      stip:real;
      ozenki:array[1..5] of byte;
     end;
     Var ch:byte;
   f:text;
 
   
Procedure sozdan;
Var s:student;
    n:string;
    c:char;
    i:byte;
         Begin
         clrscr;
         write('введите имя файла:');
         Readln(n);
         Assign(F,n);
 Rewrite(F);
 Repeat
  Write('введите фамилию студента: ');
  Readln(s.fio);
  Writeln(f,s.fio);
  Write('введите индекс группы студента: ');
  Readln(s.index1);
  Writeln(f, s.index1);
  for i:=1 to 5 do begin
  Write('введите оценку за ',i,' экзамен: ');
  Readln(s.ozenki[i]);
  Writeln(f,s.ozenki[i]);
  end;
    Write('введите участие студента в общественной работе(0,1): ');
  Readln(s. uchastie);
  Writeln(f,s.uchastie);
  Write('ввести следующего студента (y/n)?: ');
  Readln(c);
 Until c='n';
 Close(f);
 end;
 function stipendia:integer;
 Var  s:student;
    n:String;
stip:real;
       i:byte;
 begin
 stip:=720;
 Assign(F,n);
  Reset(F);
  While Not(Eof(f)) do  begin
  Readln(f,s.fio);
     readln(f,s.index1);
      for i:=1 to 5 do
       readln(f,s.ozenki[i]);
       readln(f,s.uchastie);
 for i:=1 to 5 do begin
if (s.ozenki[i]=5) and (s.uchastie=1) then  begin
  stip:=stip+stip*0.5;
   readln(stip);
stip:=stipendia;
  Writeln(f, stip);
  end
   else
  
 { if (s.uchastie=0) then}
     stip:=stip+stip*0.25;
         readln(stip);
          Writeln(f, stip);
         if (s.ozenki[i]=5) or (s.ozenki[i]=4) then
          readln(stip);
           Writeln(f, stip);
          if  (s.ozenki[i]=3) and ((s.ozenki[i]=4)or (s.ozenki[i]=5)) and (s.uchastie=1) then  begin
          readln(stip);
           Writeln(f, stip);
           end else
         { if (s.uchastie=0) then}
          stip:=0;
          readln(stip);
WriteLn(stip);
  end;
  end;
 Close(f);
      end;
Procedure Prosmotr;
Var  s:student;
    n:String;
    stip:real;
      i:byte;
Begin
 Write('введите имя файла: ');
 Readln(n);
  if not fileexists(n) then
   begin
   
    writeln;
    writeln('Такого файла не существует')
   end
else
 begin
  Assign(F,n);
  Reset(F);
   While Not(Eof(f)) do
    Begin
     writeln;
     Readln(f,s.fio);
     readln(f,s.index1);
      for i:=1 to 5 do
       readln(f,s.ozenki[i]);
       readln(f,s.uchastie);
        readln(f,stip);
     Writeln('фамилия студента*: ', s.fio:5);
     writeln('группа:',s.index1:6);
     Write('оценки за экзамены: ');
     for i:=1 to 5 do write(s.ozenki[i],' ');
     writeln;
     Writeln('участие в общественной работе: ',s.uchastie:3);
   Writeln('стипендия: ',stip:8,' ');
 
 end;
   Close(f);
 end;
 end;
   Procedure Poisk;
    var s:student;
     n,ask:String;
      Stip:real;
      choice1,choice2:char;
    i:byte;
    begin
    Write('введите название файла: ');
 Readln(n);
 Assign(F,n);
 if not fileexists(n) then
   begin
    writeln;
    writeln('Такого файла не существует');
     Write('введите название файла: ');
 Readln(n);
 Assign(F,n);
 Reset(f);
   end
else
    Reset(f);
  Write('введите фамилию студента или индекс группы(справка 111)*: ');
 readln(ask);
 while(pos('фамилия=',ask)=0)and(pos('группа=',ask)=0)  do
 begin
 writeln;
 writeln('введите запрос следующим образом');
 writeln('фамилия= или группа=');
  writeln;
  Write('введите фамилию студента или индекс группы(справка 111)*: ');
 readln(ask);
 end;
 
 if pos('фамилия',ask)<>0 then
 begin
 choice1:=ask[1];
 end else
 if pos('группа',ask)<>0 then begin
   choice2:='t';
 end;
Readln(f,s.fio);
     readln(f,s.index1);
      for i:=1 to 5 do
       readln(f,s.ozenki[i]);
       readln(f,s.uchastie);
        readln(f,stip);
    Writeln('фамилия студента*: ',s.fio:6);
     writeln('группа:',s.index1:6);
     Write('оценки за экзамены: ');
     for i:=1 to 5 do write(s.ozenki[i],' ');
     writeln;
     Writeln('участие в общественной работе: ',s.uchastie:3);
   Writeln('стипендия: ',stip:8,' ');
   While Not(Eof(f)) do
   begin
       case choice1 of
       '=': begin if  (ask=s.fio) then
       writeln(s.fio:6);
       writeln(s.index1:6);
     for i:=1 to 5 do write(s.ozenki[i],' ');
     writeln;
     Writeln(s.uchastie:3);
 Writeln(stip:8,' ');
   case choice2 of
    't': begin if(pos(ask,s.index1)<>0)then
      writeln(s.fio:5);
      writeln(s.index1:6);
     for i:=1 to 5 do write(s.ozenki[i],' ');
     writeln;
     Writeln(s.uchastie:3);
   Writeln(stip:8,' ');
   end;
   end;
   end;
   end;
   end;
   close(f);
   writeln;
   end;
 
 
 
 
   begin
 Repeat
  Writeln('1:создать файл');
  Writeln('2:просмотр');
  Writeln('3:поиск');
  Writeln('4:выход');
  Write('выбирите пункт в меню: ');
  Readln(ch);
   Case ch of
   1: sozdan;
    stipendia;
   2: Prosmotr;
   3:poisk
 
  End;
 Until Ch=4;
end.
Проблема: при просмотре и всем остальном выводит что стипендия: 0.0Е+000. Помогите пожалуйста решить ее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2014, 02:30
Ответы с готовыми решениями:

Некорректный вывод числа на экран
В чем может быть проблемма, если после использывания процедуры OutInt proc aam add ax,3030h mov dl,ah ...

Отсортировать массив структур (фамилии студентов и размер их стипендии) по размеру стипендии
Помогите с задачей Условие:&quot;заданный тип структур что содержатся следующие сведения какие фамилии студентов и размер их...

В ячейку b8 записать вывод стипендии по имени и номеру семестра а8 и а9
В ячейку b8 записать вывод стипендии по имени и номеру семестра а8 и а9 Для решения задачи разрешено использовать функции выбор и просмотр

5
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.06.2014, 08:54
Сделай
Pascal
1
 stip:integer;
или у вас стипендия с копейками, или вообще ни разу не видел?
1
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 4
11.06.2014, 11:31  [ТС]
вообще думал сделать double, если уж с копейками) это я прошляпил) спасибо
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.06.2014, 11:35
Если вещественное, то вывод такой
Pascal
1
Writeln(stip:8:2');
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 4
11.06.2014, 21:34  [ТС]
всё равно не вылазит правильный ответ, уже до 1 дошло, подскажите пожалуйста как вывести...
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 4
13.06.2014, 00:59  [ТС]
UPD: с выводом решилось, теперь функция поиска не правильно работает, кто может помочь ?
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
program ttg;
 
uses
  crt;
 
type
  student = record
    fio:      string;
    index1:   string;
    ozenki:   array[1..5] of byte;
    uchastie: byte;
    stip:     real;
 
  end;
var
  ch: byte;
  f:  Text;
 
  function stipendia(s: student): integer;
  var
    i:    byte;
    stip: integer;
    count3, count4, count5: byte;
  begin
    stip := 0;
 
    count3 := 0;
    count4 := 0;
    count5 := 0;
    for i := 1 to 5 do
    begin
      if s.ozenki[i] = 3 then
        count3 := count3 + 1;
      if s.ozenki[i] = 4 then
        count4 := count4 + 1;
      if s.ozenki[i] = 5 then
        count5 := count5 + 1;
    end;
    if (count3 = 1) and (s.uchastie = 1) then
      stip := 720;
    if count3 = 0 then
    begin
      if count4 > 0 then
        stip := 720
      else
      if (count4 = 0) and (s.uchastie = 1) then
        stip := 1080
      else
      if (count4 = 0) and (s.uchastie = 0) then
        stip := 900;
    end;
    if count3 > 1 then
      stip := 0;
    stipendia := stip;
  end;
 
  procedure sozdan;
  var
    s:      student;
    n, ask: string;
    c:      char;
    i:      byte;
  begin
    clrscr;
    Write('введите имя файла:');
    Readln(n);
    Assign(F, n);
    Rewrite(F);
    repeat
      Write('введите фамилию студента: ');
      Readln(s.fio);
      Writeln(f, s.fio);
      Write('введите индекс группы студента: ');
      Readln(s.index1);
      Writeln(f, s.index1);
      for i := 1 to 5 do
      begin
        Write('введите оценку за ', i, ' экзамен: ');
        Readln(s.ozenki[i]);
        Writeln(f, s.ozenki[i]);
      end;
      Write('введите участие студента в общественной работе(0,1): ');
      Readln(s.uchastie);
      Writeln(f, s.uchastie);
      s.stip := stipendia(s);
      Writeln(f, s.stip);
      Write('ввести следущеего студента (y/n)?: ');
      Readln(c);
    until c = 'n';
    Close(f);
  end;
 
 
  procedure Prosmotr;
  var
    s: student;
    n: string;
    i: byte;
  begin
    Write('введите имя файла: ');
    Readln(n);
    if not fileexists(n) then
    begin
 
      writeln;
      writeln('Такого файла не существует');
    end
    else
    begin
      Assign(F, n);
      Reset(F);
      while not (EOF(f)) do
      begin
        writeln;
        Readln(f, s.fio);
        readln(f, s.index1);
        for i := 1 to 5 do
          readln(f, s.ozenki[i]);
        readln(f, s.uchastie);
        readln(f, s.stip);
        Writeln('фамилия студента : ', s.fio: 5);
        writeln('группа:', s.index1: 6);
        Write('оценки за экзамены: ');
        for i := 1 to 5 do
          Write(s.ozenki[i], ' ');
        writeln;
        Writeln('участие в общественной работе: ', s.uchastie: 3);
        Writeln('стипендия: ', s.stip, ' ');
 
      end;
      Close(f);
    end;
  end;
 
 
Procedure Poisk;
  var s:student;
     n,ask:String;
      choice:char;
    i:byte;
    begin
    Write('введите название файла: ');
 Readln(n);
 Assign(F,n);
   //While Not(Eof(f)) do
 if not fileexists(n) then
   begin
    writeln;
    writeln('Такого файла не существует');
   end   else
  begin
 Reset(F);
 Write('введите фамилию студента или индекс группы(справка 111) : ');
 readln(ask);
 while(pos('фамилия=',ask)=0)or(pos('группа=',ask)=0) do
 begin
 writeln;
 writeln('введите запрос следуйщим образом');
 writeln('фамилия= или группа=');
 writeln;
 Write('введите фамилию студента или индекс группы(справка 111) : ');
 readln(ask);
 end;
      if pos('фамилия=', ask) > 0 then
       begin
            if (ask = s.fio) then
            begin
            readln(f, s.fio);
            readln(f, s.index1);
            for i := 1 to 5 do
            readln(f, s.ozenki[i]);
            readln(f, s.uchastie);
            readln(f, s.stip);
            Writeln('фамилия студента : ', s.fio:6);
            writeln('группа:', s.index1: 6);
            Write('оценки за экзамены: ');
            for i := 1 to 5 do
              Write(s.ozenki[i], ' ');
            writeln;
            Writeln('участие в общественной работе: ', s.uchastie: 3);
            Writeln('стипендия: ', s.stip: 8: 2, ' ');
          end
      else
      if pos('группа=', ask) > 0 then
      begin
            if (pos(ask, s.index1) > 0) then
            readln(f, s.fio);
            readln(f, s.index1);
            for i := 1 to 5 do
            readln(f, s.ozenki[i]);
            readln(f, s.uchastie);
            readln(f, s.stip);
            writeln('фамилия студента : ', s.fio: 6);
            writeln('группа:', s.index1: 6);
            writeln('оценки за экзамены: ');
            for i := 1 to 5 do
              Write(s.ozenki[i], ' ');
            writeln;
            Writeln('участие в общественной работе: ', s.uchastie: 3);
            Writeln('стипендия: ', s.stip: 8: 2, ' ');
          end;
      end;
  end;
  end;
 
 
 
begin
  repeat
    Writeln('1:создать файл');
    Writeln('2:просмотр');
    Writeln('3:поиск');
    Writeln('4:выход');
    Write('выбирите пункт в меню: ');
    Readln(ch);
    case ch of
      1: sozdan;
      2: Prosmotr;
      3: poisk;
    end;
  until Ch = 4;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2014, 00:59
Помогаю со студенческими работами здесь

Некорректный вывод
Не получается вывести имена файлов (какая-то белиберда на выходе). И не могу понять, как обратиться к содержимому файла #include...

Некорректный вывод из БД
Есть БД. Есть сайт куда выкладывается информация из БД. Но почему-то выкладывается частично. Сайт-справочник: и когда открываешь...

Некорректный вывод
Доброго времени суток Суть такова: есть прога, выполняющая действия с односвязным списком. Первоначально, инфа в список подаётся из...

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

Некорректный вывод
В access'e есть 2 таблицы: 1)Основная с информацией о продуктах 2)Второстепенная, откуда берется информация о стране(Россия, США) ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru