С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.01.2014
Сообщений: 6

Вычислить оборот, есть нюанс

02.04.2014, 12:49. Показов 612. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
База в типизированном файле. В базе фамилии повторяются, то есть для каждой фамилии есть несколько значений оборота. Считает нормально, но, когда находит ту же фамилию, снова считает оборот. В итоге выводит для каждой фамилии сначала полный оборот, потом оборот, за вычетом первой строки и так далее до конца файла.
Как обозначить условие, чтобы посчитанные фамилии уже не считались повторно?

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
program oborot;
uses crt;
const n=10;
type zap=record 
    prodavec:string[8];
    marka:string[15];
    god, oborot:integer;
    date:string[8]
    end;
type prod = set of 1..n;
var d: file of zap;
    z: zap;
    mas:array[1..10] of zap;
    i, j: integer;
    a:longint;
    pr:set of byte;
       
begin
clrscr;
assign (d, 'E:\d.txt');
reset(d);
i:=1;
while not eof (d) do
    begin
        read(d,z);
        mas[i]:=z; 
        i:=i+1;
        end;
pr:=[];
for i:=1 to n do begin
    a:=mas[i].oborot;
    for j:=i+1 to n do 
    if mas[i].prodavec = mas[j].prodavec then begin
        a:=a+mas[j].oborot; 
        pr:=pr+[i];
        end;
    if i in pr then writeln (mas[i].prodavec, ' ', a);
a:=0;
 end;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2014, 12:49
Ответы с готовыми решениями:

Хочу Windows 8.1 но есть нюанс
Недавно я ставил себе 7ку с надеждой сидеть на ней, обновил драва, зашел в игру и увидел жесткие просадки фпс, после чего я поставил...

Массивы, заменить все элементы, попадающие в интервал [a, b], нулем, всё работает, но есть 1 нюанс
Всё вроде работает, есть такой вопрос как вывести массив до изменения более простым способом, чтобы код не был таким громоздким. using...

оборот в ИТ
В последнее время есть приток капитала в ИТ. Никто не знает где посмотреть капитализацию или денежный оборот примерно ИТ кампаний?...

4
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
02.04.2014, 12:58
Цитата Сообщение от Ptahovich Посмотреть сообщение
Считает нормально
Что считает? Написал бы точное условие.
0
0 / 0 / 0
Регистрация: 30.01.2014
Сообщений: 6
02.04.2014, 13:07  [ТС]
Условие по данной процедуре: вычисление и вывод на экран итогового оборота по каждому продавцу.

Добавлено через 1 минуту
В базе содержатся данные: ФИО продавца, марка проданной машины, год выпуска машины, оборот от продажи и дата.
Само сложение оборота по каждой фамилии продавца происходит корректно.
Косяк в том, что оборот считает столько раз, сколько раз фамилия встречается в базе.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
02.04.2014, 13:41
Объявить массив фамилий и массив сумм оборотов.
Pascal
1
2
var fm:array[1..n] of string[8];
     so:array[1..n] of integer;
Обнулить массив сумм.
При чтении файла первую фамилию записать в массив и записать в массив первый оборот, следующие проверять в массиве и если есть, до добавлять сумму в нужную ячейку, если нет, увеличить размер массива на 1, записать фамилию, в другой массив оборот.

Добавлено через 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
reset(d);
for i:=1 to n do
s0[i]:=0;
i:=0;
m:=0;
while not eof (d) do
 begin
  i:=i+1;
  read(d,z);
  if i=1 then
   begin
    m:=1;
    fm[m]:=z.prodavec;
    so[m]:=z.oborot;
   end
  else
   begin
    k:=0;
    for j:=1 to m do
    if z.prodavec=fm[j] then k:=j;
    if k=0 then
     begin
      m:=m+1;
      fm[m]:=z.prodavec;
      so[m]:=z.oborot;
     end
    else so[k]:=so[k]+z.oborot;
   end;
0
0 / 0 / 0
Регистрация: 30.01.2014
Сообщений: 6
02.04.2014, 15:43  [ТС]
все решилось несколько проще

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
begin
    clrscr;
    reset(d);
    i:=1;
    while not eof (d) do begin
        read(d,z);
        mas[i]:=z; 
        i:=i+1;
        end;
    for i:=1 to n do
        for j:=1 to n do begin
            if mas[i].prodavec < mas[j].prodavec then begin
                z:=mas[i];
                mas[i]:=mas[j];
                mas[j]:=z; 
                end;
            end;    
    t:=mas[1].prodavec;
    a:= mas[1].oborot;
    for i:=2 to n do begin
        if mas[i].prodavec = t then a := a + mas[i].oborot
        else begin
            WriteLn('Prodavec: ', t, '  oborot = ', a);
            t := mas[i].prodavec;
            a := mas[i].oborot;
            end;
        end;
    WriteLn('Prodavec: ', t, '  oborot = ', a);
close (d);
end;
но спасибо за идею с двумя массивами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2014, 15:43
Помогаю со студенческими работами здесь

Оборот there is to see ?
Здравствуйте! Давно встретил такой оборот и теперь понятия не имею как его переводить: There's a man who sees all there is to see...

Listbox и 1 нюанс
Есть такой код: procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); var sl: TStringList; i: integer; begin ...

Нюанс в программе
Помогите, пожалуйста дописать программу. Вот условие: Даны два слова. Для каждой буквы первого слова, определить, входит ли она во...

Swith - нюанс
Такой вот вопрос: как сделать так, что бы при неправильном вводе пользователя какой-либо строки, вопрос о повторении ввода не выбивался...

Нюанс в батнике
Возникла такая проблема: когда закрываю скобку или прописываю метку после %..._count% не считает количество файлов нужного типа в папке....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru