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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2010, 19:47   #1
zifanchuck
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 10
По умолчанию [Pascal] Почему-то не работает программа "Множества"

Помогите доделать программку))
Вот условие

Код:
 Задан некоторый набор товаров. Определить для каждого из 
товаров, какие из них имеются в каждом из 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('V nazvaniah ispolzovat toljko odnu lat. bukvu');
writeln;

for i:=1 to tov do
begin
write('Vvedite nazvanie ',i,' tovara -->');
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('');
writeln('Xotite prodoljit? 1-da, 0-net');
readln(cont);
if cont=1 then goto start;
end.
"Ни в одном" и "хотя бы в одном" считает норм, а вот "во всех" нет.
Переменная test, если нигде нет товара = 0, если где-то есть то 1, хотя по идеи должна считать кол-во нахождений.

Надеюсь что поможете. Зарание спасибо
zifanchuck вне форума Ответить с цитированием
Старый 27.11.2010, 22:24   #2
zifanchuck
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 10
По умолчанию

По идеи ошибка где-то в 59 строке. С множествами познакомился сегодня утром, так что может я не так формирую его. Целый день убил на эту прогу, нужно еще написать 4, тоже с множествами + выучить файлы и написать еще 4 проги, и все на понедельник =(

Вроде все правильно делаю, и в переменной тест должно храниться кол-во нахождений, а почему-то не считает =( Очень рассчитываю на вашу помощь
zifanchuck вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает Case txt Like "текст1", "текст2" Oooleg Microsoft Office Excel 2 15.07.2009 10:08
Паскаль.Программа "Верификация", "Кака бригадиру разделить заработанные деньги?".Сложные Valik102 Помощь студентам 11 23.06.2009 15:30
"Модель молекулы в газе" подскажите почему не работает? Тёма(C@$pEr) Помощь студентам 4 03.02.2009 20:28
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51