• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с множествами

  • Автор темы Автор темы Only
  • Дата начала Дата начала

Only

Новые
Регистрация
24 Мар 2013
Сообщения
14
Реакции
0
Баллы
0
Помогите с множествами

Задание:
Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из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);
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);
if tovar in magazin[j] then inc(test);
end;
if test=0 then v1:=v1+[tovar];
if test>0 then v2:=v2+[tovar];
if test=n then v3:=v3+[tovar];
end;

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

writeln;

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


writeln;

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



Не считает "В каждом магазине", почему не понимаю, исправьте, или напишите программу пожалуйста.
 
Не считает "В каждом магазине", почему не понимаю, исправьте, или напишите программу пожалуйста.
Уф, отладил. Главная ошибка - не та переменная цикла была в выделенной строке: нужно 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);
     [COLOR=Red][B]magazin[i]:=magazin[i]+[temp];[/B][/COLOR]
    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.
 
Спасибо большое)
 
Назад
Сверху