Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.12.2012, 14:48   #1 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Unhappy Одномерные массивы, нахождение среднего арифметического

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[i]);
k:=0; s:=0;
for i:=1 to n do
begin
if (i) mod 2=0 and (c[i]>0) then begin
s:=s+c[i];inc(k);
end;
writeln('Srednee arifmetichescoe= ',s/k);
end;

readkey;
end.
Sandra 2000 вне форума   Ответить с цитированием

Старый 09.12.2012, 14:48
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Нашлось еще несколько тем, которые создавались ранее

Одномерные массивы на Pascal
Одномерные массивы
Задачи на двумерные и одномерные массивы
Одномерные массивы
Помогите пожалуйста с задачей на одномерные массивы и матрицу. Паскаль
Помогите пожалуйста с задачей на одномерные массивы и матрицу

Старый 09.12.2012, 15:48   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
write('Vvedite kol-vo elementov:');
readln(n);
write('vvedite znachenie:');
readln(c[i]);
А цикл ввода Пушкин организовывать будет?
Vladimir_S вне форума   Ответить с цитированием
Старый 09.12.2012, 16:30   #3 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Вот другой вариант

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[i]);
end;
s:=0; k:=0;
for i:=1 to n do
begin
if i mod 2=0 and (c[i]>0) then
s:=s+c[i];
k:=k+1;
write(c[i]);
end;
writeln;
writeln('Srednee arifmetichescoe: ',s/k);
readln;
End.

Эта сначала запустилась,но среднее арифметическое не правильно вычисляет да и массив выводится не так как надо
потом я что-то поменяла и ошибка вышла что-то с типами связано ...???
Sandra 2000 вне форума   Ответить с цитированием
Старый 09.12.2012, 17:09   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
потом я что-то поменяла и ошибка вышла что-то с типами связано ...???
Еще как связано! Ну кто же, скажите на милость, задает переменную цикла и количество членов массива в формате "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.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.12.2012, 18:03   #5 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию СПАСИБО

а можно еще вывести заданный массив после ввода элементов... извините я просто не хочу опять ошибок наделать
Sandra 2000 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.12.2012, 18:18   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
а можно еще вывести заданный массив после ввода элементов... извините я просто не хочу опять ошибок наделать
Легко:
Код:
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;
 for i:=1 to n do write(c[i]:8:3);
 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 15.05.2013, 18:59   #7 (permalink)
PaskalABC.NET
Новичок
 
Регистрация: 15.05.2013
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А можно как ни будь этот же код, только сделать так, что бы кол-во чисел которые ввел, можно было через запятую писать, или через пробел
PaskalABC.NET вне форума   Ответить с цитированием
Старый 16.05.2013, 10:01   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от PaskalABC.NET Посмотреть сообщение
А можно как ни будь этот же код, только сделать так, что бы кол-во чисел которые ввел, можно было через запятую писать, или через пробел
Не понял. Что значит "количество чисел через запятую"? Или Вам надо, чтобы можно было весь массив набить на экране а потом одним нажатием "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.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.05.2013, 11:21   #9 (permalink)
PaskalABC.NET
Новичок
 
Регистрация: 15.05.2013
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Thumbs up

Спасибо огромное! Прям то что нужно!
PaskalABC.NET вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:12.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.