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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2011, 20:05   #1
syc07
 
Регистрация: 01.07.2011
Сообщений: 7
По умолчанию Формирование чисел с пом. random и построение столбчатой диаграммы.

\UPDATE программа написана, тему можно закрыть\удалить.



Сформировать с помощью датчика случайных чисел 100 чисел в пределах от 1 до 10, построить столбчатую диаграмму частоты выпадения каждого числа.
Код:
program rand;
uses crt;
type kg=integer;
type mas=array[1..10] of kg;
Var a:mas;
    f:text;
    y,s:string;
    x,k,i,j,allcount,mx,h:integer;
    msh:real;
begin
clrscr;
allcount:=0;
s:='0123456789';
assign(f,'new.txt');
rewrite(f);
for k:=1 to 100 do
 begin
   x:=1+random(10);
   writeln(f,x);
 end;
close(f);
reset(f);
while not EOF(f) do
readln(f,y);
for i:=1 to 10 do
a[i]:=0;
for i:=1 to length(y) do
if pos(UpCase(y[i]),s)>0 then
  begin
    a[pos(UpCase(y[i]),s)]:=a[pos(Upcase(y[i]),s)]+1;
    allcount:=allcount+1;
  end;
close(f);
clrscr;
gotoxy(1,25);
for i:=1to 10 do
  begin
    gotoxy(i*3,wherey);
    write(chr(i+47));
  end;
mx:=0;
for i:=1 to 10 do
if a[i]>mx then mx:=a[i];
msh:=22/mx;
for i:=1 to 10 do
  begin
    h:=i*3;
    for j:=24 downto 24-round(a[i]*msh) do
      begin
       gotoxy(h,j);
       write('*');
      end;
    gotoxy(h,wherey-1);
    write(a[i]);
  end;
readln;
end.
программа почему-то берет только одно(последнее?)число и заносит его в диаграмму.
Как ее заставить "кушать" все 100 чисел?

Последний раз редактировалось syc07; 02.07.2011 в 15:33.
syc07 вне форума Ответить с цитированием
Старый 01.07.2011, 20:32   #2
Dogmat
Пользователь
 
Регистрация: 12.06.2008
Сообщений: 76
По умолчанию

Забыли Randimize.

Добавте, где-нибудь перед использованием функции random. Например:

Код:
rewrite(f);
randomize;
for k:=1 to 100 do
 begin
   x:=1+random(10);
   writeln(f,x);
 end;
Dogmat вне форума Ответить с цитированием
Старый 01.07.2011, 20:47   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
почему-то
Потому что такой синтаксис в Паскале) Пример: в 1 случае в цикле выполнится только a:=a+i; а b:=b+i; выполнится только 1 раз (и i будет = 10) после цикла. Во 2 случае оба будут в цикле.
Код:
for i:=1 to 10 do
   a:=a+i;
b:=b+i;
Код:
for i:=1 to 10 do
begin
   a:=a+i;
   b:=b+i;
end;
В данном случае в while not eof(f) выполняется только readln(f,y) и естественно после цикла он = последнему числу.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение диаграммы flyinsky Microsoft Office Excel 1 10.06.2011 00:56
построение диаграммы в excel novice2010 Помощь студентам 2 01.10.2010 08:58
вычислить среднее гармоническое значение элементов вектора чисел с плав точкой с пом алгоритма accumulate -GT- Общие вопросы C/C++ 2 28.11.2009 17:19
Построение диаграммы на С Raptor Помощь студентам 2 04.12.2007 10:15
Построение диаграммы Владислав Крюков Microsoft Office Excel 12 14.11.2007 23:50