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

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

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

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

Одномерные массивы, нахождение среднего арифметического

Sandra 2000

Новые
Регистрация
4 Окт 2012
Сообщения
49
Реакции
0
Баллы
0
Одномерные массивы, нахождение среднего арифметического

Turbo Pascal
Дан массив С(N). Найти среднее арифметическое положительных элементов с чётными индексами.

Задача простая,но пишу программу и постоянно ошибки выдает.Уже не знаю что делать!

Вот

uses crt;
var C:array[1..100] of real;
i,k,n:real;
S:real;
begin
clrscr;
write('Vvedite kol-vo elementov:');readln(n);
write('vvedite znachenie:');
readln(c);
k:=0; s:=0;
for i:=1 to n do
begin
if (i) mod 2=0 and (c>0) then begin
s:=s+c;inc(k);
end;
writeln('Srednee arifmetichescoe= ',s/k);
end;

readkey;
end.
 
Вот другой вариант

uses crt;
var c:array[1..100]of real;
k:byte;
n,i:real;
s:real;
Begin
clrscr;
write('Vvedite kol-vo elementov: ');readln(n);
for i:=1 to n do
BEGIN
writeln('Vvedite znachenie: ');readln(c);
end;
s:=0; k:=0;
for i:=1 to n do
begin
if i mod 2=0 and (c>0) then
s:=s+c;
k:=k+1;
write(c);
end;
writeln;
writeln('Srednee arifmetichescoe: ',s/k);
readln;
End.

Эта сначала запустилась,но среднее арифметическое не правильно вычисляет да и массив выводится не так как надо
потом я что-то поменяла и ошибка вышла что-то с типами связано ...???
 
потом я что-то поменяла и ошибка вышла что-то с типами связано ...???
Еще как связано! Ну кто же, скажите на милость, задает переменную цикла и количество членов массива в формате "real"?!! Абсолютно не годится! Есть и еще ошибки. Например, если в операторе If стоит не одно, а несколько условий, свзанных отношениями and и or, то эти условия ОБЯЗАТЕЛЬНО должны быть взяты в круглые скобки. Есть и еще помарки, в общем, вот исправленный вариант. Попробуйте разобраться:
Код:
uses crt;
var
 c:array[1..100] of real;
 k,i,n:byte;
 s:real;
Begin
 clrscr;
 write('Vvedite kol-vo elementov: ');
 readln(n);
 for i:=1 to n do
  begin
   write('Vvedite znachenie: ');
   readln(c[i]);
  end;
 s:=0;
 k:=0;
 for i:=1 to n do
  if (i mod 2=0) and (c[i]>0) then
   begin
    s:=s+c[i];
    k:=k+1;
   end;
 writeln;
 writeln('Srednee arifmetichescoe: ',s/k:0:5);
 readkey;
End.
 
СПАСИБО

а можно еще вывести заданный массив после ввода элементов... извините я просто не хочу опять ошибок наделать
 
а можно еще вывести заданный массив после ввода элементов... извините я просто не хочу опять ошибок наделать
Легко:
Код:
uses crt;
var
 c:array[1..100]of real;
 k,i,n:byte;
 s:real;
Begin
 clrscr;
 write('Vvedite kol-vo elementov: ');
 readln(n);
 for i:=1 to n do
  begin
   write('Vvedite znachenie: ');
   readln(c[i]);
  end;
[COLOR=Red][B] for i:=1 to n do write(c[i]:8:3);
 Writeln;[/B][/COLOR]
 s:=0;
 k:=0;
 for i:=1 to n do
  if (i mod 2=0) and (c[i]>0) then
   begin
    s:=s+c[i];
    k:=k+1;
   end;
 writeln;
 writeln('Srednee arifmetichescoe: ',s/k:0:5);
 readkey;
End.
 
А можно как ни будь этот же код, только сделать так, что бы кол-во чисел которые ввел, можно было через запятую писать, или через пробел
 
А можно как ни будь этот же код, только сделать так, что бы кол-во чисел которые ввел, можно было через запятую писать, или через пробел
Не понял. Что значит "количество чисел через запятую"? Или Вам надо, чтобы можно было весь массив набить на экране а потом одним нажатием "Enter" его ввести? Можно. Но никаких запятых - только пробелы!!!
Сразу отмечу недостаток такого метода: Вы сами должны контролировать совпадение количества набранных чисел с введенной длиной массива.
Код:
uses crt;
var
 c:array[1..100]of real;
 k,i,n:byte;
 s:real;
Begin
 clrscr;
 write('Vvedite kol-vo elementov: ');
 readln(n);
 writeln('Vvedite massiv:');
 for i:=1 to n-1 do read(c[i]);
 readln(c[n]);
 Writeln;
 s:=0;
 k:=0;
 for i:=1 to n do
  if (i mod 2=0) and (c[i]>0) then
   begin
    s:=s+c[i];
    k:=k+1;
   end;
 writeln;
 writeln('Srednee arifmetichescoe: ',s/k:0:5);
 readkey;
End.
 
Спасибо огромное! Прям то что нужно!
 
Назад
Сверху