Консультация № 63702
22.11.2006, 12:37
0.00 руб.
0 6 2
Помогите решить задачу. При решениии выдается сообщение ‘type mismatch‘. Текст задачи:
Составьте программу, проверяющую является ли последовательность из 10 чисел вводимых с клавиатуры :
1)арифметической;
2)геометрической.
Когда я решал то разбил на 2 части. В первой проверял арифметическую прогрессию.Листинг:
program labrab4B;
const n=10;
var
A:array[1..10] of real;
s1,s2,i:byte;
begin
for i:=1 to 10 do
begin
writeln(‘BBegute 10 chisel‘);
readln(A[i]);
s1:=0;
for i:=1 to 10 do s1:=s1+a[i];
for i:=1 to n do s2:=(a[1]+a[n])*n/2;
writeln(s2);
if s1=s2 then
writeln(‘arifmeticheskay progressia‘)
else
writeln(‘ne arifmeticheskay progresia‘);
end.
Пожайлуста помогите.Прислать на kutcherkain@yandex.ru

Обсуждение

давно
Мастер-Эксперт
425
4118
22.11.2006, 13:09
общий
Когда компилятор выдает ошибку ‘type mismatch‘, он Вам указывает точное место в коде, где произошла ошибка и Вы сами можете ее поправить. Что Вам непонятно, поясните пожалуйста.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
22.11.2006, 13:21
общий
Вы суммируете элементы массива A[] и сохраняете в s1.Но массив у вас переменных с плавающей точкой (real), а пеерменные s1 и s2 — типа byte.Но вообще, действительно, учитесь читать, что вам говорит компилятор.
Неизвестный
22.11.2006, 14:32
общий
это ответ
Здравствуйте, Das_Kain!
Эта ошибка говорит о несочетаемости типов real и byte, причём по вашей задаче, даже если задать массив byte, то переменная s2 должна быть real, т.к. в неё присваиваеися значение, полученное делением. И ещё в первом цикле пропущен end, но это уже другая ошибка.
Неизвестный
22.11.2006, 16:57
общий
Пробовал различные типы не помогает.
давно
Мастер-Эксперт
425
4118
22.11.2006, 17:09
общий
To Das_Kain:Не надо пробовать различные типы, надо пробовать одинаковые типы, тогда обязательно поможет.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
22.11.2006, 18:04
общий
это ответ
Здравствуйте, Das_Kain!
for i:=1 to 10 do s1:=s1+a[i]; S1 - byte ему нельзя присваивать значение типа REAl
перед s1:=0 нужен end для предыдущего цикла.
Зачем введена константа n?
Форма ответа