Другие языки программирования и технологии

Проверьте программу на паскале.

Задача найти сумму цифр числа, не превосходящего 10 в 100 степени. Входной файл INPUT.TXT, где само число и выходной OUTPUT.TXT куда писать ответ. program n4; var a: array [1..x] of integer; summa, x, i, n: integer; s: string; begin x:=1; for i:=1 to 100 do x:=10x; readln ('INPUT.TXT',S); n:=lenght (S); a:=S; summa:=0; for i:=1 to n do begin read (a); summa:=summa+a end; writeln ('OUTPUT.TXT',summa) end. если есть ошибки укажите на них
Да здесь туева хуча ошибок!
1) Так с файлами не работают.
2) Если в строке файла больше 255 символов, то работать не будет.
3) Если цифры нужно читать из файла, то зачем их вводишь с клавиатуры?
Марат Жансаитов
Марат Жансаитов
99 014
Лучший ответ
У тебя массив с неопределенными границами с переменной "Х", которая используется далее в программе, в т. ч. в определении переменных. Да и, честно говоря, программой это назвать нельзя. Извини...
По сути, прочитать из файла в строку. Сказано же, что не больше, чем 10^100 - значит не больше 100 символов. А разбор строки приведен вот здесь (нашел за 2 минуты в Инете) :
Для иллюстрации рассмотрим такую задачу: "Найти сумму цифр введенного |
|натурального числа". Используя только числовые переменные, решить ее можно, |
|но предлагаемое здесь решение, по-моему, проще. |
|Program Str5; |
|Var |
|S : String; |
|I,X,A,C : Integer; |
|Begin |
|Writeln('Введите натуральное число'); |
|Readln(S); {Число вводится в строковую переменную} |
|A:=0; |
|For I:=1 To Length(S) Do |
|Begin |
|Val(S[ i ],X,C); {Цифровой символ превращается в число} |
|A:=A+X {Цифры суммируются} |
|End; |
|Writeln('Сумма цифр равна ',A) |
|End.

Вертикальные черточки от текста примера. И вместо Val(S[ i ],X,C); лучше использовать Ord(S[ i ]) - 48. 48 - это код символа "0".
Edil Sm@to\/
Edil Sm@to\/
19 095