Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.05.2009
Сообщений: 10

Исправьте прогу с файлами

30.05.2009, 15:47. Показов 1030. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задача:
Написать две программы. Первая формирует файл записей следующей структуры: на-звание дисциплины, количество часов, отводимое на изучение дисциплины, фамилия преподавателя, кафедра, есть или нет экзамен по этому предмету. Вторая программа просматривает файл и определяет:
• преподавателя, который принимает больше всего экзаменов;
• кафедру, на которой читается больше всего предметов;
• список преподавателей указанной кафедры.
Исправьте ее, а то она бесконечно работает.(это вторая программа).
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
program z1;
uses crt;
type tab=record
name:string;
hours:integer;
Ser:string;
kaf:string;
exam:string;
end;
var f:file of tab;a:tab;i,k,max,num,n:integer;s,kaf,prep:string;
begin
assign(f,'C:\Users\Пользователь\Desktop\Текстовый документ.txt');
reset(f);
i:=0;
while not eof(f) do
begin
seek(f,i);
read(f,a);
prep:=a.ser;
k:=1;
while not eof(f) do
begin
seek(f,i+1);
read(f,a);
if prep=a.ser then
k:=k+1;
end;
if k>max then
begin
max:=k;
num:=i;
end;
i:=i+1;
end;
seek(f,num);
read(f,a);
writeln('Преподаватель ',a.ser,' принимает больше всего экзаменов.');
reset(f);
i:=0;
max:=0;
while not eof(f) do
begin
seek(f,i);
read(f,a);
kaf:=a.kaf;
k:=1;
s:='';
s:=s+a.name;
while not eof(f) do
begin
seek(f,i+1);
read(f,a);
if (kaf=a.kaf)and(pos(a.name,s)=0) then
k:=k+1;
end;
if k>max then
begin
max:=k;
num:=i;
end;
i:=i+1;
end;
seek(f,num);
read(f,a);
writeln('На кафедре ',a.kaf,' читается больше всего предметов.');
reset(f);
s:='';
write('Введите кафедру:');readln(kaf);
while not eof(f) do
begin
read(f,a);
s:=s+a.ser;
if (kaf=a.kaf)and(pos(a.ser,s)=0) then
writeln(a.ser);
end;
close(f);
end.
Добавлено через 4 часа 19 минут 25 секунд
Помогите срочно!!! Никак не найду ошибку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2009, 15:47
Ответы с готовыми решениями:

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

8 класс исправьте плз прогу(условие прилагается)
условие: Вводится последовательность полож. целых чисел после которых вводится 0(признак конца ввода) определить сумму чисел, их кол-во...

Исправьте прогу
Использовал Turbo C++ 3.0 #include <stdio.h> #include <string.h> void main(void) struct TWORDS { char word; ...

11
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.05.2009, 17:11
Тут не исправлять, а переделывать надо, сплошной бред написан.
0
0 / 0 / 0
Регистрация: 23.05.2009
Сообщений: 10
30.05.2009, 18:33  [ТС]
ну помогите
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.05.2009, 18:51
Вот это что за конструкция?
Pascal
1
2
3
4
5
6
7
8
9
10
while not eof(f) do
begin
seek(f,i);
read(f,a);
kaf:=a.kaf;
k:=1;
s:='';
s:=s+a.name;
while not eof(f) do
begin
Открыли файл, прошли по нему, узнали что надо, закрыли. Снова открыли, прошли, узнали, закрыли и т. д, у Вас 3 раза.

Добавлено через 2 минуты 43 секунды
И не надо сразу и while not eof(f) и seek, либо
Pascal
1
2
3
4
while not eof(f) do
  begin
   read(f,a);
............................
либо
Pascal
1
2
3
4
5
for i:=0 to filesize(f)-1 do
  begin
   seek(f,i);
   read(f,a);
...................
0
0 / 0 / 0
Регистрация: 23.05.2009
Сообщений: 10
31.05.2009, 09:12  [ТС]
спасибо

Добавлено через 53 секунды
Pascal
1
2
3
4
5
6
7
8
9
10
write('Введите кафедру:');readln(kaf);
while not eof(f) do
begin
read(f,a);
s:=s+a.ser;
if (kaf=a.kaf)and(pos(a.ser,s)=0) then
writeln(a.ser);
end;
close(f);
end.
Вот эта часть не работает(
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.05.2009, 09:18
Вот эта часть не работает(
В смысле на работу не ходит, или косит?
Вы напишите что она должна делать и что не получается, либо ошибку выдает, тогда какую и в какой строке, либо выдает неверный результат, тогда напишите что должна выдать и что выдает.
0
0 / 0 / 0
Регистрация: 23.05.2009
Сообщений: 10
31.05.2009, 10:24  [ТС]
Она должна вывести список преподавателей указанной кафедры. А она не выводит ничего.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.05.2009, 11:17
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
write('Введите кафедру:');readln(kaf);
k:=0;
while not eof(f) do
  begin
   read(f,a);
   if kaf=a.kaf then 
     begin
        k:=1;
       writeln(a.ser);//если название кафедры совпадает с введенным, выводим  aамилию         
     end;                    
  end;
if k=0 then writeln('такой кафедры нет');
close(f);
end;
1
0 / 0 / 0
Регистрация: 23.05.2009
Сообщений: 10
31.05.2009, 21:19  [ТС]
решил проверить прогу и увидел что первая и вторая части не правильно работают.
В первой выводится второй преподаватель из файла, а во второй выводится последняя кафедра.
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
assign(f,'C:\Users\Пользователь\Desktop\Текстовый документ.txt');
reset(f);
i:=0;
for i:=0 to filesize(f)-1 do
  begin
   seek(f,i);
   read(f,a);
prep:=a.ser;
k:=1;
if (prep=a.ser) and (a.exam='Yes') then
k:=k+1;
if k>max then
begin
max:=k;
num:=i;
i:=i+1;
end;
seek(f,num);
end;
read(f,a);
writeln('Преподаватель ',a.ser,' принимает больше всего экзаменов.');
reset(f);
i:=0;
max:=0;
for i:=0 to filesize(f)-1 do
  begin
   seek(f,i);
   read(f,a);
kaf:=a.kaf;
k:=1;
s:='';
s:=s+a.name;
if (kaf=a.kaf)and(pos(a.name,s)=0) then
k:=k+1;
end;
if k>max then
begin
max:=k;
num:=i;
i:=i+1;
end;
seek(f,num);
read(f,a);
writeln('На кафедре ',a.kaf,' читается больше всего предметов.');
вот эти части.

Добавлено через 2 минуты 46 секунд
А должны выводить: преподавателя, который принимает больше всего экзаменов; кафедру, на которой читается больше всего предметов.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.05.2009, 21:29
• преподавателя, который принимает больше всего экзаменов;
Это значит, что в поле экзамены должно стоять количество экзаменов, которое принимат преподаватель, т.е. число. А у Вас
exam:string;
????
А найти это-просто найти максимум, типа
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
mx:=0;s:='';
reset(f);
while not eof(f) do
 begin
  read(f,a);
  if a.exam>mx then
   begin
     mx:=a.exam;
     s:=a.name;
   end;
 end;
close(f);
writeln('Больше всех принимает экзаменов ',s);
А вообще у вас совершенно непонятно офомлена структура записи, непонятно что к чему относится и что как искать. Структура должна быть сложнее, состоять не только из простых полей, но и полей записей.
0
0 / 0 / 0
Регистрация: 23.05.2009
Сообщений: 10
31.05.2009, 21:59  [ТС]
a.exam обозначает есть или нет экзамен по предмету

Добавлено через 1 минуту 27 секунд
a.ser фамилия преподавателя
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.05.2009, 22:00
Слушай, извини, но ковыряться в твоих сэрах нет никакого желания, проще три новых ппроги написать, чем в Вашем кривом коде ковыряться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2009, 22:00
Помогаю со студенческими работами здесь

исправьте прогу про одномерные массивы.
//Задан массив из k чисел. Сдвинуть элементы массива циклически на n //позиций влево. #include <iostream.h> #include...

Исправьте прогу, пожалуйста! Прога про массивы....
Задача:Написать программу. Размерности массивов вводить с клавиатуры. Элементы массивов по желанию пользователя вводить с клавиатуры или...

написал первую прогу в СИ. не запускается.исправьте пож ошибку(и)
#include <math.h> main () { float a,b,c,x,s; cout<<"Введите a,b,c через пробел"; cin>> a,b,c; x=fabs(c-b); ...

Как переделать прогу для работы с файлами
Всем привет) Есть вот такая программа. Она выводит на консоль сообщение - находится ли точка на прямой или нет. Координаты точки -...

Написал прогу, создал Release конфигурацию. Какие оттуда файлы нужны, чтоб передать прогу заказчику
там их 6 штук вышло. понимаю для чего myapp.exe -собственно сам exe myapp.exe.xml - там конфигурационные параметры. А ДЛЯ ЧЕГО...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru