Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2013, 04:14   #1
JeFix
Новичок
Джуниор
 
Регистрация: 10.10.2012
Сообщений: 2
По умолчанию Объяснение условия программы

Приветствую. Помогите пожалуйста объяснить код программы, начиная с 20-й строки ( for i:=1 to vsegoElem-1 do). До этого момента все понятно, но вот после идут не очень понятные циклы...

Код:
Program otchet;
Uses crt;
Type zapis = record
  a1,a2,a3,a4,a5,a6:string;
end;
Var otchet: array[0..50] of zapis; t: zapis;
    YN:char; vsegoElem,i,j,k:integer; str1,str2:string;
Begin clrscr;
  vsegoElem:=0;
  repeat
    write('nazvanie tovara        '); readln(otchet[vsegoElem].a1);
    write('kod tovara             '); readln(otchet[vsegoElem].a2);
    write('nazvanie magazina      '); readln(otchet[vsegoElem].a3);
    write('firma proizvoditelya   '); readln(otchet[vsegoElem].a4);
    write('cena za 1 ed. tovara   '); readln(otchet[vsegoElem].a5);
    write('kolichestvo tovara     '); readln(otchet[vsegoElem].a6);
    inc(vsegoElem);
    write(#13,#10,'new tovar (y/n) '); readln(YN); write(#13,#10);
  until YN<>'y';
  for i:=1 to vsegoElem-1 do
    for k:=0 to vsegoElem-i-1 do begin
      str1:=otchet[k].a2; str2:=otchet[k+1].a2;
      for j:=1 to length(str1) do
        if (str1[j]>str2[j]) or (j>length(str2)) then begin
          t:=otchet[k]; otchet[k]:=otchet[k+1]; otchet[k+1]:=t; break; end
        else if str1[j]<str2[j] then break;
    end;
  write(#13,#10,'vivesti po nazvaniya = '); readln(str1); j:=length(str1);
  for i:=0 to vsegoElem-1 do begin
    if j<>length(otchet[i].a1) then continue;
    str2:=otchet[i].a1;
    for k:=1 to j do begin
      if str1[k]<>str2[k] then break;
      if k=j then writeln(otchet[i].a3);
    end;
  end;
readln;
end.
JeFix вне форума Ответить с цитированием
Старый 14.06.2013, 09:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

сначала идёт сортировка по коду товара (кстати, весьма и весьма странная сортировка - (почему "странная" - см. примечание ниже)

потом выводятся те названия магазинов, где в записи название товара совпадает с введённым.


примечание.
Человек, который писал эту программу не знает, что строки можно сравнивать строки!!
например, вместо:
Цитата:
Код:
write(#13,#10,'vivesti po nazvaniya = '); readln(str1); j:=length(str1);
  for i:=0 to vsegoElem-1 do begin
    if j<>length(otchet[i].a1) then continue;
    str2:=otchet[i].a1;
    for k:=1 to j do begin
      if str1[k]<>str2[k] then break;
      if k=j then writeln(otchet[i].a3);
    end;  end;
можно написать прямо вот так:
Код:
write(#13,#10,'vivesti po nazvaniya = '); readln(str1);
  for i:=0 to vsegoElem-1 do 
     if str1 = otchet[i].a1 then writeln(otchet[i].a3);
как говорится, "почувствуйте разницу"

p.s. сортировка тоже можно (нужно!) точно так же переделать основываясь на сравнении строк, а не отдельных символов!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2013, 23:17   #3
arser62
 
Регистрация: 15.06.2013
Сообщений: 6
По умолчанию

Извините ! Не поможете с примером как реализовать .как написать скрипт.
In1 и In2 счётчики которые считают продукцию .
На данном примере у меня всё получилось In1 + In2 и считает сумму..дополнительный (виртуальный канал )
Но мне нужно вычислить скорость за 60 секунд. с In1 или In2. и получится 2 доп.виртуальных канала.( не нужно будет покупать тахометры )
arser62 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение условия программы rambo07 Помощь студентам 0 20.02.2013 18:12
Незаметная проверка условия, защита программы. bagabuga Общие вопросы Delphi 4 03.05.2012 14:22
написать объяснение программы Алька2206 Фриланс 3 30.03.2011 17:18
Объяснение программы man-utd- Помощь студентам 4 23.11.2010 21:46
Объяснение программы ForzaJuve Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 09:27