04.01.2013, 16:20 | #1 (permalink) |
Новичок
Регистрация: 04.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите разобраться с задачей, Паскаль
С клавиатуры вводятся длина (<=100) вектора и его (целые) элементы. Составить новый вектор, записав в него для каждого элемента исходного вектора средние арифметическое его цифр. Результаты вывести на экран. uses crt; var a,b:array[1..100] of integer; i,n,s,x,k:integer; begin clrscr; write('n='); readln(n); for i:=1 to n do read(a[i]); x:=a[i]; k:=0; s:=0; while x>0 do begin s:=s+x mod 10; k:=k+1; x:=x div 10; end; b[i]:=s/k; writeln('вектор средних арифметических цифр'); for i:=1 to n do write(b[i],' '); readkey end. |
04.01.2013, 16:20 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Мой вам совет - попробуйте пока почитать схожие обсуждения Помогите пожалуйста с задачей на одномерные массивы и матрицу. Паскаль Помогите с задачей по С Помогите с задачей на С++ Помогите с задачей о байтах |
04.01.2013, 18:18 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Ошибка в том, что Вы определяете формат массива b, как Integer, т.е. целочисленный. Между тем среднее арифметическое по природе своей число вещественное (real), и к тому же для целых чисел операция деления дробью не определена, только div. Поэтому вместо var a,b:array[1..100] of integer; следует задать var a:array[1..100] of integer; b:array[1..100] of real; и, кстати, вывод результата придется сделать форматным, например, так: for i:=1 to n do write(b[i]:4:1); |
|
04.01.2013, 19:00 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Допустим, мы хотим вывести на экран вещественное число R, равное 7.25. Если мы просто напишем Write(R); то увидим вот что: Код:
7.250000000000000E+000 Write(R:12); Это означает, что на всё-провсё, включая знаковый разряд, букву "Е" и три цифры порядка, мы отвели 12 позиций. Получаем Код:
7.2500E+000 Write(R:8:3); мы получим Код:
7.250 Write(R:0:3); приведет к Код:
7.250 |
|
04.01.2013, 19:34 | #5 (permalink) |
Новичок
Регистрация: 04.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасибо за разъяснение, я только начинающий в этом деле
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|