Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Помогите с множествами (http://www.tehnari.ru/f43/t87329/)

Only 09.04.2013 17:29

Помогите с множествами
 
Задание:
Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом изn магазинов, какие товары есть хотя бы в одном магазине и каких товаров нет ни в одном магазине.


Что получилось:
Цитата:

program m3_test;
uses crt;
label start;

var
cont:byte;
magazin:array[1..100] of set of char;
tovar:array[1..100] of char;
v1,v2,v3:set of char;
temp:char;
test,n,i,j,t,tov:integer;


begin
start:
clrscr;

write('Vvedite kol-vo tovarov:');
readln(tov);
writeln;

for i:=1 to tov do
begin
write('Vvedite nazvanie ',i,' tovara (1 bukva):');
readln(tovar[i]);
end;
writeln;

write('Vvedite kol-vo magazinov:');
readln(n);

writeln;

for i:=1 to n do
begin
write('Vvedite kol-vo tovoarov v ',i,' magazine:');
readln(t);
writeln;
for j:=1 to t do
begin
write('Imja ',j,' tovara:');
readln(temp);
magazin[j]:=magazin[j]+[temp];
end;
writeln;
end;

writeln;

for i:=1 to tov do
begin
test:=0;

for j:=1 to n do
begin
writeln(j,':',tovar[i]);
if tovar[i] in magazin[j] then inc(test);
end;
if test=0 then v1:=v1+[tovar[i]];
if test>0 then v2:=v2+[tovar[i]];
if test=n then v3:=v3+[tovar[i]];
end;

writeln('Resultat');
writeln('V kashdom magazine:');
for i:=1 to tov do
if tovar[i] in v3 then writeln(tovar[i]);

writeln;

writeln('Xotjabi v 1 magazine:');
for i:=1 to tov do
if tovar[i] in v2 then writeln(tovar[i]);


writeln;

writeln('Ni v odnim magazine:');
for i:=1 to tov do
if tovar[i] in v1 then writeln(tovar[i]);
writeln;
end.

Не считает "В каждом магазине", почему не понимаю, исправьте, или напишите программу пожалуйста.

Vladimir_S 10.04.2013 10:47

Цитата:

Сообщение от Only (Сообщение 894136)
Не считает "В каждом магазине", почему не понимаю, исправьте, или напишите программу пожалуйста.

Уф, отладил. Главная ошибка - не та переменная цикла была в выделенной строке: нужно i, а стояла j. Ну и еще по мелочи причесал.

Код:

Uses CRT;
var
 magazin:array[1..100] of set of char;
 tovar:array[1..100] of char;
 v1,v2,v3:set of char;
 temp:char;
 test,n,i,j,t,tov:integer;

begin
 clrscr;

 write('Vvedite kol-vo tovarov: ');
 readln(tov);
 writeln;

 for i:=1 to tov do
  begin
  write('Vvedite nazvanie ',i,' tovara (1 bukva): ');
  readln(tovar[i]);
  end;
 writeln;

 write('Vvedite kol-vo magazinov: ');
 readln(n);
 writeln;

 for i:=1 to n do
  begin
  write('Vvedite kol-vo tovarov v ',i,' magazine: ');
  readln(t);
  writeln;
  for j:=1 to t do
    begin
    write('Imja ',j,' tovara: ');
    readln(temp);
    magazin[i]:=magazin[i]+[temp];
    end;
  writeln;
  end;

 writeln;

 for i:=1 to tov do
  begin
  test:=0;
  for j:=1 to n do
    if tovar[i] in magazin[j] then inc(test);
  if test=0 then v1:=v1+[tovar[i]];
  if test>0 then v2:=v2+[tovar[i]];
  if test=n then v3:=v3+[tovar[i]];
  Writeln(Tovar[i],'  ',test);
  end;

 writeln('Resultat:');
 writeln('V kashdom magazine:');
 for i:=1 to tov do
  if tovar[i] in v3 then write(tovar[i],' ');

 writeln;

 writeln('Xotjabi v 1 magazine:');
 for i:=1 to tov do
  if tovar[i] in v2 then write(tovar[i],' ');

 writeln;

 writeln('Ni v odnim magazine:');
 for i:=1 to tov do
  if tovar[i] in v1 then write(tovar[i],' ');
 writeln;

 ReadKey
end.


Only 10.04.2013 17:07

Спасибо большое)


Часовой пояс GMT +4, время: 12:09.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.