06.05.2010, 19:29 | #1 (permalink) |
Новичок
Регистрация: 06.05.2010
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Не знаю как решить задачи на паскале, помогите пожалуйста!
Задачи однотипные, а как решать не знаю!!!! Помогите!Всего 3 здачи!! 1.С клавиатуры вводится строка длиной N, 2<N<100. Заменить пробелы на ‘_’, а знаки препинания на пробелы. Результат вывести на экран. 2.Дан целочисленный массив размера N, 2<N<100. Размер массива и его элементы вводятся с клавиатуры. Найти минимальную разницу между двумя элементами массива. Результат вывести на экран. 3.Дан целочисленный массив размера N, 2<N<100. Размер массива и его элементы вводятся с клавиатуры. Обнулить все элементы кроме минимального и максимального. Результат вывести на экран. |
06.05.2010, 19:29 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Поищите решение проблемы в аналогичных обсуждениях Помогите, пожалуйста, решить три задачи по Pascal Помогите пожалуйста решить матрицу в паскале Помогите решить четыре задачи в Паскале Помогите пожалуйста решить задачи |
06.05.2010, 21:10 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
VAR i:INTEGER; S:STRING; BEGIN WriteLn('Enter the string:'); ReadLn(S); For i:=1 to Length(S) do If S[i]=' ' then Write('_') else If (S[i]='.') or (S[i]=',') or (S[i]=';') or (S[i]=':') or (S[i]='-') or (S[i]='?') or (S[i]='!') then Write(' ') else write (S[i]); WriteLn; ReadLn; END. |
|
06.05.2010, 21:25 | #3 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
VAR i,N,Min,Max,Imin,Imax:INTEGER; A,B:ARRAY[1..100] of INTEGER; BEGIN Write('N= '); ReadLn(N); Min:=32000; Max:=-32000; For i:=1 to N do begin Write('A[',i,']= '); ReadLn(A[i]); If A[i]<Min then begin Min:=A[i]; Imin:=i; end; If A[i]>Max then begin Max:=A[i]; Imax:=i; end; B[i]:=0; end; B[Imin]:=A[Imin]; B[Imax]:=A[Imax]; For i:=1 to N do WriteLn(A[i]:6,B[i]:10); ReadLn; END. |
|
07.05.2010, 01:19 | #5 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
Подсказка вам - вычисляете разницу между текущим и следующим (можно предыдущим), и сравниваете с минимальной. Если меньше, то минимальной разнице присваиваете текущую
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
07.05.2010, 22:02 | #7 (permalink) | |
Member
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
|
Цитата:
|
|
07.05.2010, 22:09 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да просто объявить исходный размер массива "с запасом", потом обычным образом ввести N и все циклы обработки элементов массива вести до N.
Код:
Var A:ARRAY[1..500] of WORD; N,i:INTEGER; Begin Write('N= '); ReadLn(N); For i:=1 to N do A[i]:=1; ... |
07.05.2010, 22:11 | #9 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
То, что мы вводим с клавиатуры, присваивается некоторой переменной.
Размер массива в разделе описания переменных должен не может быть определен переменной. Так что задавайте максимальный размер для задачи (100), а работать будете с N элементами (n введете с клавиатуры) |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|