Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 09.04.2013, 17:29   #1 (permalink)
Only
Member
 
Регистрация: 24.03.2013
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post Помогите с множествами

Задание:
Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из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.

Не считает "В каждом магазине", почему не понимаю, исправьте, или напишите программу пожалуйста.
Only вне форума   Ответить с цитированием
Старый 10.04.2013, 10:47   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 25,625
Сказал(а) спасибо: 260
Поблагодарили 487 раз(а) в 154 сообщениях
Репутация: 84095
По умолчанию

Цитата:
Сообщение от Only Посмотреть сообщение
Не считает "В каждом магазине", почему не понимаю, исправьте, или напишите программу пожалуйста.
Уф, отладил. Главная ошибка - не та переменная цикла была в выделенной строке: нужно 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.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 10.04.2013, 17:07   #3 (permalink)
Only
Member
 
Регистрация: 24.03.2013
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое)
Only вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.