![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
>hamka< |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Когда есть массив из строк, то при добавлении нового элемента, он подсоединяется к предыдущей строке. А как же их разграничить.
Код write('Введите количество сортируемых цифр ( не больше 10 ) --> '); readln(n); for I:=1 to length(n) do begin chislo2:=ord(n[i])-48;chislo:=chislo*10; chislo:=chislo2+chislo; end; if (chislo > 10) or (chislo=0) or (chislo2 < 0) or (chislo2 > 9) then writeln('Некорректное значение'); k:=0; for j:=1 to chislo do begin write('Введите ', j, '- ое число --> '); readln (a[j]); for s:=1 to length(a[j][s]) do begin ch2:=ord(a[j][s])-48; ch:=ch*10; ch:=ch2+ch; end; writeln(ch); .... если они разграничиваются ( ведь массив же ), то где же моя ошибка ? =(( |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
бред какой-то..
можете задание сказать для того, что бы было понятно о чем речь вообще.. мне потому что не понятна ваша затея... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
>hamka< |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
от пользователя получают 10 цифр ( их тип string ), далее из переводят в число (без val'а) по алгоритму : к последней цифре прибавляется предпоследняя*10 + предпредпоследняя*100 и т.д. , в итоге получается число
![]() далее идет заполнение массива числами ( которые сначала, являются строками) потом по этому же алгоритму идет их перевод в число. Далее я хочу эти числа занести уже в массив цифровой , а далее их сортировка методом "пузырька". Но в проге у меня получается, что когда я заношу в строковый массив строку, она у меня переводится в число, но потом при занесении следущеей строки, число прибавляется к предыдущему ( хотя по идее не должно ). И как итог вместо массива из строк ( а потом и из чисел ) получается одна большая строка ( или число ). Надеюсь я объяснила понятно ![]() |
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Смотри-ка сюда...
Function strInt(s:string):longint; Функция strInt(s:string):longint; переводит из строки в число.. ошибки не учитываются... дальше сама прога проста.. вводится 10 строк и переводится в 10 чисел.. на основе того ,что я дал, ты можешь все сделать дальше.. еще вопросы есть? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
>hamka< |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата(Oleg_Z @ 23.02.05 21:54) Смотри-ка сюда... Function strInt(s:string):longint; еще вопросы есть? Спасибики! Тока один еще вопрос: а после транк'а что за выражение такое, т.е. что оно делает по алгоритму перевода строки в число? |
Altair |
![]()
Сообщение
#6
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
возведение в степень. Есть такая формула.
В данном случае возвожу 10 в степень соответствующую.. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
>hamka< |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Перенесено из темы "Формирование вектора"
этот алгорит проверки на "не число" не в цикле у меня работает. А потом у меня должно происходить формирование вектора. И здесь такая ситуация-> с первым числом все нормально, а потом происходит выход из цикла. Идет переход на формирование вектора. Код ... begin for i:=1 to chislo do begin Z: write('Введите ', i, '- ое число --> '); readln (a[i]); for j:=1 to length (a[i]) do begin l:=ord (a[i][j])-48; if (l< 0) or (l> 9) then begin writeln('Некорректное значение'); goto Z; end; end; for i:=1 to chislo do b[i]:=PEREVOD(a[i]); SORTIROVKA (chislo,b); end; ... почему это происходит? и как правильно доделать эту задачу. Мне нужно, чтобы дальше было - "введите <cлед. число> и т.д. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата(>hamka< @ 24.02.05 13:47) как правильно доделать эту задачу. Мне нужно, чтобы дальше было - "введите <cлед. число> и т.д. Я же предлагал: написать свою функцию чтения строки... Что-то типа вот этого: Код Uses Crt; ... Function myRead: String; var s: string; ch: char; begin s := ''; repeat ch := readkey; if ch in ['0' .. '9'] then begin write(ch); s := s + ch end; until ch = #13; writeln; myRead := s end; ... { в основной программе: } for i:=1 to chislo do begin write('Введите ', i, '- ое число --> '); a[i] := myRead; end; { далее по тексту } Теперь пользователь просто не сможет ввести те символы, которые он вводить не должен... |
>hamka< |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Так же это практически всю программу придется переписывать. А у меня уже все практически готово =(( Даж проверку на max значение сделала, когда можно вводить какие угодно символы. И все работает +) Тока когда в цикл подставляю, идет обработка тока первого элемента и все. Может можно как-нибудь сделать, чтобы не переписывать
![]() Сообщение отредактировано: >hamka< - 24.02.2005 16:07 |
>hamka< |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
И еще такой вопросик. В программе я хочу проверить нажатую клавишу на <Enter>
Что я должна написать ? Код if n=……? then writeln. как символ это не представить. А как символ из аски < Enter> как называется? Еще я прочитала про какие-то коды опроса клавиатуры =)). Что это такое ? |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата(>hamka< @ 24.02.05 15:51) В программе я хочу проверить нажатую клавишу на <Enter> Что я должна написать? А что я в предыдущем посте писал? Цитата repeat ch := readkey; if ch in ['0' .. '9'] then begin write(ch); s := s + ch end; until ch = #13; Это что такое, если не проверка, нажат ли <Enter> Цитата(>hamka< @ 24.02.05 15:51) как символ это не представить ![]() |
>hamka< |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Объединено из темы: "Enter не работает"
Код begin clrscr; main: writeln; write('Введите количество сортируемых цифр ( не больше 10 ) --> '); readln(n); for j:=1 to length (n) do begin l:=ord (n[j])-48; if (l< 0) or (l> 9) then begin writeln('Некорректное значение'); goto main; end; end; goto Dalee; Хелп! Почему этот кусок кода не реагирует на нажатие <Enter> как на некорректное значение? Ведь раньше все работало, а по мере увеличения проги работать перестало! Теперь просто переход на новую строчку и вылет из программы. Что делать? Продолжайте обсуждение своей задачи в одном топике |
Altair |
![]()
Сообщение
#13
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
"жуть. " (С)
1. убрать метки. 2. показать весь код. 3. тогда поговорим. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
>hamka< |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Вот программа, которая не работает. не знаю почему =)) не вижу я своих ошибок.
она простая. многие в моей группе ее за 2 часа написали. причем у них программа работала даже с ошибками в коде, которые видели все. а у меня... я плачу =(( а вот собственно и задание. Получение от пользователя до 10 ( и 10) целых чисел. Сортировка , вывод на экран. все элементы-целые простые числа. Цель -> максимальная защита "от дурака", т.е. хоть ногами по клавиатуре прыгай, но программа должна быть полностью рабочей ( без каких-либо вылетов) Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Нет уж, увольте ... Разбираться в такой программе просто несерьезно... Сплошные GOTO... Избавитесь от них, тогда пожалуйста. А так - :no:
|
Altair |
![]()
Сообщение
#16
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
вот программа. работает по заданию. Тестил в BPW если что...
можно топтать клаву, все равно работает. Если встречаются символы, просто игнорирует их. Код Const Count=10; Type arrType = Array[1 .. Count] Of Longint; Procedure Bubble(Var ar: arrType; n: integer); Var i, j, T: Integer; Begin For i := 1 To n Do For j := n DownTo i+1 Do If ar[Pred(j)] > ar[j] Then { < } Begin T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T End End; Function strInt(s:string):longint; var i:byte; ss:longint; setc:set of char; begin setc:=['0'..'9']; ss:=0; for i:=1 to length(s) do begin If s[i] in setc then ss:=ss+(ord(s[i])-48)*trunc(Exp((length(s)-i)*Ln(10))); end; strInt:=ss; end; var s:string; a:array[1..Count] of string; b:arrtype; i,n:integer; begin write('Сколько будем вводить чисел:'); readln(n); For i:=1 to n do readln(a[i]); {ввод 10 чисел} For i:=1 to n do b[i]:=StrInt(a[i]); {переводим в числа} Bubble(b,n); {сортируем} clrscr; for i:=1 to n do writeln(b[i]); {вывод на экран отсортирвоанных чисел} end. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
>hamka< |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
Вот моя модифицированная программа, но она кажеЦа не работает вообще =))
Такая глючная. Ужас! если набрать число, то вводится тока одно. При наборе букв, вообще вылетает. Недочетов масса. Мож как нибудь можно свою передедать? Там ведь только на <Enter> не реагирует. + цикл не проходит . ( LABA_1) Прикрепленные файлы ![]() |
Altair |
![]()
Сообщение
#18
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
а чем не устраивает тот вариант что я предложил?
может там просто что-то не понятно тебе? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
>hamka< |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Репутация: ![]() ![]() ![]() |
ну, во-первых, все-таки вылетает.
потом у меня программа диалоговая, т.е. если не цифры - сообщение и повторный ввод. А в этой все воспринимается. И самое главное "вылетает" Плиз, помогите кто-нить передалать мою, чтобы не было гоуту, и чтобы работало ![]() Мне надо сдавать уже в четверг. Это вопрос гордости Ж) |
Altair |
![]()
Сообщение
#20
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
1. она не вылетает.
2. а исправить программу для повторного ввода слабо??? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:30 |