Помогите разобраться с задачей, Паскаль
выдает ошибку 18 строки, переделывала на несколько раз. не могу понять что не правильно, помогите пожалуйста!:tehnari_ru_837:
С клавиатуры вводятся длина (<=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. |
Цитата:
Ошибка в том, что Вы определяете формат массива 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); |
for i:=1 to n do write(b[i]:4:1);[/QUOTE]
Спасибо большое за помощь, подскажите еще пожалуйста от куда взялись цифры :4:1 |
Цитата:
Допустим, мы хотим вывести на экран вещественное число 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 |
спасибо за разъяснение, я только начинающий в этом деле
|
Часовой пояс GMT +4, время: 09:09. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.