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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 00:46   #1
sergik-2504
Новичок
Джуниор
 
Регистрация: 22.12.2010
Сообщений: 1
Восклицание Не правильно работает программа

Составить программу,которая проводит выборы: 3 кандидата и 2000 избирателей.

Код:
Program Vibory;
uses CRT 
type
kand=object
private
sum:integer;
public
end;
izb=object
public
function vib:integer;
end;
var
b:array[1..3] of kand;
a:array[1..2000] of izb;
i:integer;
function izb.vib:integer;
begin
vib:=random(3)+1;
end;
begin
randomize
b[1].sum:=0;
b[2].sum:=0;
b[3].sum:=0;
for i:=1 to 2000 do
begin
if a[i].vib = 1 then b[1].sum:=b[1].sum + 1; 
if a[i].vib = 2 then b[2].sum:=b[2].sum + 1; 
if a[i].vib = 3 then b[3].sum:=b[3].sum + 1;
end;
writeln('pervuy kandidat nabral ',b[1].sum); 
writeln('vtoroi kandidat nabral ',b[2].sum);
writeln('tretii kandidat nabral ',b[3].sum); 
writeln('vsego progolosovalo ', b[1].sum+b[2].sum+b[3].sum);
end.

вроде бы все работает,но почему голосуют то 1960,то 2040..то иное число избирателей (
Что надо исправить??

Последний раз редактировалось sergik-2504; 22.12.2010 в 00:55. Причина: не правильно составил описание
sergik-2504 вне форума Ответить с цитированием
Старый 22.12.2010, 09:17   #2
Блуд
Пользователь
 
Регистрация: 23.05.2010
Сообщений: 53
По умолчанию

Код:
Program Vibory;
uses CRT 
type
kand=object
private
sum:integer;
public
end;
izb=object
public
function vib:integer;
end;
var
b:array[1..3] of kand;
a:array[1..2000] of izb;
i,r:integer;
function izb.vib:integer;
begin
vib:=random(3)+1;
end;
begin
randomize
b[1].sum:=0;
b[2].sum:=0;
b[3].sum:=0;
for i:=1 to 2000 do
begin
r:=a[i].vib;
if r = 1 then b[1].sum:=b[1].sum + 1; 
if r = 2 then b[2].sum:=b[2].sum + 1; 
if r = 3 then b[3].sum:=b[3].sum + 1;
end;
writeln('pervuy kandidat nabral ',b[1].sum); 
writeln('vtoroi kandidat nabral ',b[2].sum);
writeln('tretii kandidat nabral ',b[3].sum); 
writeln('vsego progolosovalo ', b[1].sum+b[2].sum+b[3].sum);
end.
а лучше так:
Код:
for i:=1 to 2000 do
begin
r:=a[i].vib;
 b[r].sum:=b[r].sum + 1; 

end;

Последний раз редактировалось Блуд; 22.12.2010 в 09:20.
Блуд вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не правильно (или правильно?) работает позиционирование в WebKit mutabor HTML и CSS 5 09.12.2010 09:54
Программа работает не правильно artem611 Паскаль, Turbo Pascal, PascalABC.NET 2 22.09.2010 07:49
не пойму правильно ли работает программа серг Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.05.2010 14:58
программа работает. правильно ли? getUp Общие вопросы C/C++ 10 26.03.2010 07:07
Не правильно работает программа Virus_L Помощь студентам 0 28.12.2009 22:52