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

Задача на экзамен

14.08.2017, 10:51. Показов 1145. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста с кодом.
Задача: Сведения о выполненных работах включают: фамилия работника, название работы, расценки за единицу, объем работы. Данные в виде записи хранятся в файле. Переписать из одного файла в другой все данные по одному работнику и получить сумму, заработанную этим работником
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2017, 10:51
Ответы с готовыми решениями:

задача нужна на экзамен на тип Records!!!!!
Известны данные о 20-ти учениках класса: фамилии, имена, отчество, дата рождения (год, номер месяца и число). Определить, есть ли в классе...

Паскаль!циклы и одномерный массив. На экзамен нужно срочно.!!не могу сдать экзамен
СРОЧНО!ПОМОГИТЕ ПОЖАЛУЙСТА РЕШИТЬ ЗАДАЧУ В ПАСКАЛЕ НА ЦИКЛЫ И ОДНОМЕРНЫЙ МАССИВ.ЭКЗАМЕН НЕ могу СДАТЬ. туТ ВЛОЖЕНИЕ ФОТОГРАФИЯ С ЗАДАНИЕМ....

Задача на экзамен
Помогите накидать код пожалуйста к задаче) Задача: 1. Создайте класс Message, в котором определите поле attachment типа T, а также...

17
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.08.2017, 11:32
1. В каком Паскале нужна программа, Turbo Pascal, Free Pascal,Паскаль АВС, Паскалт АВС.net?
2. О каком типе файлов идет речь, текстовые или типизированные файлы записей? Если текстовые, то приложите пример исходного файла.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.08.2017, 11:34
Цитата Сообщение от Snyppi Посмотреть сообщение
все данные по одному работнику
Может не по одному, а по каждому?
0
0 / 0 / 0
Регистрация: 17.04.2014
Сообщений: 15
14.08.2017, 11:35  [ТС]
Puporev, любой язык, про файлы не знаю, в задаче так сказано.

Добавлено через 47 секунд
Puporev, по одному
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.08.2017, 14: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
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
//тип записи
type rabotnik=record
              fam:string[20];
              rab:string[20];
              rsc:real;
              obm:integer;
              sum:real;
              end;
var f1,f2:file of rabotnik;//файлы
    r,r1:rabotnik;//переменные импа запись
    n,i,j:integer;//счетчики
begin
//создадим исходный файл
repeat
write('Сколько записей внести в файл (от 3 до 20) n=');
readln(n);
until n in [3..20];
assign(f1,'file_1');
rewrite(f1);
for i:=1 to n do
 begin
  writeln('Запись ',i);
  with r do
   begin
    write('Фамилия: ');readln(fam);
    write('Название работы: ');readln(rab);
    write('Расценка: ');readln(rsc);
    write('Объем работ: ');readln(obm);
    sum:=rsc*obm;
    write(f1,r);
   end;
 end;
cls; //очистим экран от ввода
writeln('Содержание исходного файла');
reset(f1);
writeln('----------------------------------------------------------');
writeln('|      Фамилия       |  Название работы   |Расценка|Объем|');
writeln('----------------------------------------------------------');
while not eof(f1) do
 begin
  read(f1,r);
  with r do
  writeln('|',fam:20,'|',rab:20,'|',rsc:8:2,'|',obm:5,'|');
 end;
writeln('----------------------------------------------------------');
assign(f2,'file2');
rewrite(f2);
reset(f1); //откроем 1 файл
read(f1,r); //прочитаем 1-ю запись
write(f2,r); //запишем в файл 2
for i:=1 to filesize(f1)-1 do
 begin
  read(f1,r); //читаем записи из 1 файла
  reset(f2);  //открываем файл 2
  j:=0;//ищем такую же фамилию
  read(f2,r1);
  while r1.fam<>r.fam do
   begin
    inc(j);
    read(f2,r1);
   end;
  if j=filesize(f2) then //если не нашли
   begin
    seek(f2,filesize(f2)); //пишем запись в конец 2 файла
    write(f2,r);
   end
  else//если нашли
   begin
    r1.sum:=r1.sum+r.sum;//добавим сумму
    seek(f2,j); //запишем на место записи в файле 2
    write(f2,r1);
   end;
 end;
close(f1);
writeln('Содержание нового файла');
reset(f2);
writeln('--------------------------------------');
writeln('|      Фамилия       |Сумма заработка|');
writeln('--------------------------------------');
while not eof(f2) do
 begin
  read(f2,r);
  with r do
  writeln('|',fam:20,'|',sum:15:2,'|');
 end;
close(f2);
writeln('----------------------------------------------------------');
end.
1
0 / 0 / 0
Регистрация: 17.04.2014
Сообщений: 15
15.08.2017, 14:19  [ТС]
Puporev, спасибо большое

Добавлено через 53 минуты
Puporev, как переделать Ваш код чтоб в конце не одна фамилия выводилась, а все?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.08.2017, 14:38
Да, что-то я неверно написал, нужно посмотреть и потестировать.
0
0 / 0 / 0
Регистрация: 17.04.2014
Сообщений: 15
15.08.2017, 14:41  [ТС]
Puporev, Мне сегодня дали другую задачку, но я думаю, что они похожи. Вот: Сведения о выполненных работах включают: фамилию работника, название работы, расценку за единицу, объем работы. Данные в виде записей хранятся в файле. Напечатать ведомость для выплаты заработной платы, в которой указаны фамилии работников и заработанная каждым сумма.
Вы не могли бы по-быстрому переделать, хотя б визуально. Я так понял, что в конце просто переделать, чтоб все фамилии выводились. Сдаю экзамен на листике, так что ошибки приветствуются)
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.08.2017, 14:44
Так это абсолютно тоже самое, только не вредность, а ведомость.
0
0 / 0 / 0
Регистрация: 17.04.2014
Сообщений: 15
15.08.2017, 14:44  [ТС]
Puporev, угу, то есть код подходит? Спасибо
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.08.2017, 14:50
Код подходит, но он с ошибками, программа не работает как нужно.
0
0 / 0 / 0
Регистрация: 17.04.2014
Сообщений: 15
15.08.2017, 14:51  [ТС]
Puporev, и на том спасибо, сойдёт
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
15.08.2017, 15:04
Puporev,
пожалуй, вместо 48-73:
Pascal
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  Reset(f1);
  while not EoF(f1) do begin
    Read(f1,r);
    Reset(f2);
    while not EoF(f2) do begin
      Read(f2,r1);
      if r.fam=r1.fam then begin
        Seek(f2,FilePos(f2)-1);
        r.sum:=r.sum+r1.sum;
        Break;
      end;
    end;
    Write(f2,r);
  end;
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.08.2017, 15:40
Так не срабатывает, добавил переменную
Pascal
1
var t:boolean;
и убрал 1 end;
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while not EoF(f1) do
 begin
  Read(f1,r);
  Reset(f2);
  r1.fam:='';
  t:=true;
  while not EoF(f2) do
   begin
    Read(f2,r1);
    if r.fam=r1.fam then
     begin
      Seek(f2,FilePos(f2)-1);
      r.sum:=r.sum+r1.sum;
      Write(f2,r);
      t:=false;
     end;
   end;
  if t then
   begin
    seek(f2,filesize(f2));
    write(f2,r);
   end;
 end;
Добавлено через 11 минут
Да, перед этим оставил
Pascal
1
2
3
reset(f1); //откроем 1 файл
read(f1,r); //прочитаем 1-ю запись
write(f2,r); //запишем в файл 2
Добавлено через 1 минуту
Весь код для ТСа, вдруг нужно.
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
//тип записи
type rabotnik=record
              fam:string[20];
              rab:string[20];
              rsc:real;
              obm:integer;
              sum:real;
              end;
var f1,f2:file of rabotnik;//файлы
    r,r1:rabotnik;//переменные импа запись
    n,i,j:integer;//счетчики
    t:boolean;
begin
//создадим исходный файл
repeat
write('Сколько записей внести в файл (от 3 до 20) n=');
readln(n);
until n in [3..20];
assign(f1,'file_1');
rewrite(f1);
for i:=1 to n do
 begin
  writeln('Запись ',i);
  with r do
   begin
    write('Фамилия: ');readln(fam);
    write('Название работы: ');readln(rab);
    write('Расценка: ');readln(rsc);
    write('Объем работ: ');readln(obm);
    sum:=rsc*obm;
    write(f1,r);
   end;
 end;
clrscr; //очистим экран от ввода
writeln('Содержание исходного файла');
reset(f1);
writeln('----------------------------------------------------------');
writeln('|      Фамилия       |  Название работы   |Расценка|Объем|');
writeln('----------------------------------------------------------');
while not eof(f1) do
 begin
  read(f1,r);
  with r do
  writeln('|',fam:20,'|',rab:20,'|',rsc:8:2,'|',obm:5,'|');
 end;
writeln('----------------------------------------------------------');
assign(f2,'file2');
rewrite(f2);
reset(f1); //откроем 1 файл
read(f1,r); //прочитаем 1-ю запись
write(f2,r); //запишем в файл 2
while not EoF(f1) do
 begin
  Read(f1,r);
  Reset(f2);
  r1.fam:='';
  t:=true;
  while not EoF(f2) do
   begin
    Read(f2,r1);
    if r.fam=r1.fam then
     begin
      Seek(f2,FilePos(f2)-1);
      r.sum:=r.sum+r1.sum;
      t:=false;
      Write(f2,r);
     end;
   end;
  if t then
   begin
    seek(f2,filesize(f2));
    write(f2,r);
   end;
 end;
close(f1);
writeln('Содержание нового файла');
reset(f2);
writeln('--------------------------------------');
writeln('|      Фамилия       |Сумма заработка|');
writeln('--------------------------------------');
while not eof(f2) do
 begin
  read(f2,r);
  with r do
  writeln('|',fam:20,'|',sum:15:2,'|');
 end;
close(f2);
writeln('--------------------------------------');
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
15.08.2017, 18:18
Цитата Сообщение от Puporev Посмотреть сообщение
Так не срабатывает
Очень интересно. Тестовый пример ниже не посмотрите у себя?
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
type
  TRec = record
    fam, task: String[31];
    price, vol, sum: Real;
  end;
var
  r, t: TRec;
  fs, fd: file of TRec;
begin
  Assign(fs,'file1'); Assign(fd,'file2');
  Rewrite(fs); Rewrite(fd);
  t.sum:=1;
  t.fam:='Иванов'; Write(fs,t);
  t.fam:='Петров'; Write(fs,t);
  t.fam:='Сидоров'; Write(fs,t);
  t.fam:='Петров'; Write(fs,t);
  Reset(fs);
  while not EoF(fs) do begin
    Read(fs,r);
    Reset(fd);
    while not EoF(fd) do begin
      Read(fd,t);
      if r.fam=t.fam then begin
        Seek(fd,FilePos(fd)-1);
        r.sum:=r.sum+t.sum;
        Break;
      end;
    end;
    Write(fd,r);
  end;
  Reset(fd);
  while not EoF(fd) do with t do begin
    Read(fd,t); WriteLn(fam,'':32-Length(fam),sum:8:0);
  end;
  Close(fd); Close(fs);
end.
Прогон:
Code
1
2
3
Иванов                                 1
Петров                                 2
Сидоров                                1
0
6 / 6 / 2
Регистрация: 09.02.2016
Сообщений: 138
15.08.2017, 18:20
Цитата Сообщение от Puporev Посмотреть сообщение
О каком типе файлов идет речь, текстовые или типизированные файлы записей? Если текстовые, то приложите пример исходного файла.
да это обычная задача из первого курса программирования. Такие на курсовые дают. Файлы там всегда типизированные.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
15.08.2017, 18:22
В TP7 работает как ожидается.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.08.2017, 18:32
Я в твоем коде пропустил breack;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2017, 18:32
Помогаю со студенческими работами здесь

Задача на экзамен
Помогите кто может у меня через 3 дня экзамен мне дали билет заранее в нем задача по Delphi 7 практическая работа я ваще не бум бум в делфи...

Задача на экзамен
В сосуд призматической формы, в основании которого лежит прямоугольник со сторонами а=10 см b=15 см, налит слой воды высотой h=10 см....

экзамен. задача с процедурой
Используя процедуру 1 сформировать матрицу а(4х5) по формуле Аij = i + j при i&gt;=j i^2 при i&lt;j Используя процедуру 2 найти в матрице...

Задача про экзамен
Студенты приходят на экзамен и по очереди входят в аудиторию. Количество билетов может быть меньше числа студентов в группе и поэтому может...

Задача про экзамен на циклы
Решаю задачку: На прием экзамена у одного студента преподавателю отводится по нормативу 25 минут. На пересдачу экзамена – 35 минут....


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru