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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 19:03   #1
Angelique
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию Нужно исправить программу. Free Pascal

Помогите, пожалуйста, исправить программу. Нужно подсчитать количество элементов массива, больших среднего арифметического значения всех его элементов.
Само задание:
Дан текстовый файл размером не более 64 Кб, содержащий действительные числа, по одному в каждой строке. Переписать содержимое файла в массив, разместив его в динамически распределяемой памяти. Вычислить среднее значение элементов массива. Очистить динамическую память. Создать целый массив размером 10000, заполнить его случайными целыми числами в диапазоне от –100 до 100 и вычислить его среднее значение.
Код:
Program Srednee;
  Const NMax = 10000;
  Type Diapazon = 1..NMax;
       MasInt = Array[Diapazon] Of Integer;
       MasReal = Array[Diapazon] Of Real;
  Var PInt : ^MasInt; PReal : ^MasReal;
      I, Midint : longInt; MidReal : Real; 
      T : Text; S : string;
Begin
  Write('Введите имя файла: '); ReadLn(S);
  Assign(T, S); Reset(T); 
  MidReal:=0; MidInt:=0;	{Подготовка к суммированию}
  Randomize;
  NEW(PReal); 	{Выделение памяти под вещественный массив}
  {Ввод и суммирование вещественного массива}
  I:=0;
  While Not Eof (T) Do
  Begin Inc(I);
        ReadLn(T, PReal^[I]); 
        MidReal := MidReal + PReal^[I];
  End;
  DISPOSE(PReal);	{Удаление вещественного массива}
  NEW(PInt); 		{Выделение памяти под целый массив}
  {Вычисление и суммирование целого массива}
  For I := 1 To NMax Do
  Begin PInt^[I] := -100 + Random(201);
        Write (Pint^[I]:4); 
        MidInt := MidInt + PInt^[I] 
  End;
  Writeln;
 			{Вывод средних значений:}
  WriteLn('среднее целое равно: ', MidInt Div NMax);
  WriteLn('среднее вещественное равно: ', (MidReal/NMax):10:4)
  Close(T)
End.
Angelique вне форума
Старый 10.12.2012, 05:05   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

После того, как среднее значение уже вычислено (кстати, положи его в какую-то переменную, а не просто выводи), поставь еще один цикл по всем элементам массива. В этом цикле увеличивай на единицу счетчик (его тоже надо завести в переменных и обнулить перед подсчетом) нужных элементов при их встрече.
Если что-то нечсно - спрашивай. Успехов.
Предпочитаю на "ты".
TinMan вне форума
Старый 11.12.2012, 05:42   #3
Angelique
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
...Если что-то нечсно - спрашивай. Успехов.
Спасибо огромное.
Код:
Program Srednee;
  Const NMax = 10000;
  Type Diapazon = 1..NMax;
       MasInt = Array[Diapazon] Of Integer;
       MasReal = Array[Diapazon] Of Real;
  Var PInt : ^MasInt; PReal : ^MasReal;
      I, Midint : longInt; MidReal : Real;
      T : Text; S : string;
      x:integer; y:real;
Begin
  Write('Vvedite imja fajla: '); {Podgotovka k summirovaniyu}
  ReadLn(S);
  Assign(T, S); Reset(T);
  MidReal:=0; MidInt:=0;	{Vydelenie pa}
  Randomize;
  NEW(PReal); 	{Выделение памяти под вещественный массив}
  {Ввод и суммирование вещественного массива}
  I:=0;
  While Not Eof (T) Do
  Begin Inc(I);
        ReadLn(T, PReal^[I]);
        MidReal := MidReal + PReal^[I];
  End;
  DISPOSE(PReal);	{Удаление вещественного массива}
  NEW(PInt); 		{Выделение памяти под целый массив}
  {Вычисление и суммирование целого массива}
  For I := 1 To NMax Do
  Begin PInt^[I] := -100 + Random(201);
        Write (Pint^[I]:4);
        MidInt := MidInt + PInt^[I];



  End;
  Writeln;

  for i:=1 to NMax do
  begin
  if PReal[i]>MidInt Div Nmax then
  y:=y+1; end;
  for i:=1 to NMax do
  begin
  if PReal[i]>MidInt Div Nmax then
  x:=x+1; end;

 			{Вывод средних значений:}
  WriteLn('srednee celoe ravno: ', MidInt Div NMax);
  WriteLn('srednee vewestvennoe ravno: ', (MidReal/NMax):10:4);
  readln;
  Close(T)
End.
У меня не выходит.
Помогите, пожалуйста.
Angelique вне форума
Старый 11.12.2012, 06:09   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
Program Srednee;

{$APPTYPE CONSOLE}


  Const NMax = 10000;
  Type Diapazon = 1..NMax;
       MasInt = Array[Diapazon] Of Integer;
       MasReal = Array[Diapazon] Of Real;

  Var PInt : ^MasInt; PReal : ^MasReal;
      I, Len, Sum : integer; Mid: Real;
      T : Text; S : string;
Begin
  Write('Vvedite imja fajla: '); {Podgotovka k summirovaniyu}
  ReadLn(S);
  Assign(T, S); Reset(T);
  Mid:=0;

  NEW(PReal);
  Len:=0;
  While (Not Eof (T)) and (len<NMax) Do
  Begin
    Inc(Len);
    ReadLn(T, PReal^[Len]);
    Mid := Mid + PReal^[Len];
  End;
  Close(T);
  Mid:=Mid/Len;

  Sum:=0;
  for i:=1 to Len do
  begin
    if PReal^[i]>Mid then
      Sum:=Sum+1;
  end;
  DISPOSE(PReal);
  WriteLn('srednee vewestvennoe ravno: ', (Mid):10:4);
  WriteLn('kolvo bolshe: ', Sum);

  NEW(PInt);
  Randomize;
  For i := 1 To NMax Do
  Begin
    PInt^[i] := -100 + Random(201);
    Write (Pint^[I]:4);
    Mid := Mid + PInt^[I];
  End;
  Mid:=Mid/NMax;

  Sum:=0;
  for i:=1 to NMax do
  begin
    if PInt^[i]>Mid then
      Sum:=Sum+1;
  end;
  DISPOSE(PInt);
  WriteLn('srednee celoe ravno: ', (Mid):10:4);
  WriteLn('kolvo bolshe: ', Sum);
  readln;
End.
Не стесняемся, плюсуем!
Slym вне форума
Старый 14.12.2012, 04:07   #5
Angelique
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию

Спасибо!!!
Angelique вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно исправить программу! Anna_S2dent Помощь студентам 7 30.09.2011 10:33
нужно исправить программу в с++ tymac9n Общие вопросы C/C++ 1 12.05.2011 14:53
нужно исправить программу в с++ tymac9n Помощь студентам 1 12.05.2011 00:13
нужно исправить программу) ilnar21 Помощь студентам 1 30.10.2010 22:42