IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
Closed Topic Открыть новую тему 
> массив из строк, и формирование вектора
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Когда есть массив из строк, то при добавлении нового элемента, он подсоединяется к предыдущей строке. А как же их разграничить.
Код

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);
....

если они разграничиваются ( ведь массив же ), то где же моя ошибка ? =((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


бред какой-то..
можете задание сказать для того, что бы было понятно о чем речь вообще.. мне потому что не понятна ваша затея...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


от пользователя получают 10 цифр ( их тип string ), далее из переводят в число (без val'а) по алгоритму : к последней цифре прибавляется предпоследняя*10 + предпредпоследняя*100 и т.д. , в итоге получается число smile.gif
далее идет заполнение массива числами ( которые сначала, являются строками) потом по этому же алгоритму идет их перевод в число. Далее я хочу эти числа занести уже в массив цифровой , а далее их сортировка методом "пузырька".
Но в проге у меня получается, что когда я заношу в строковый массив строку, она у меня переводится в число, но потом при занесении следущеей строки, число прибавляется к предыдущему ( хотя по идее не должно ). И как итог вместо массива из строк ( а потом и из чисел ) получается одна большая строка ( или число ).
Надеюсь я объяснила понятно smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Смотри-ка сюда...
Function strInt(s:string):longint;
var
i:byte; ss:longint;
begin
ss:=0;
for i:=1 to length(s) do
begin
 ss:=ss+(ord(s[i])-48)*trunc(Exp((length(s)-i)*Ln(10)));
end;
strInt:=ss;
end;

var
a:array[1..10] of string;
b:array[1..10] of longint;
i:integer;
begin
for i:=1 to 10 do readln(a[i]);
for i:=1 to 10 do b[i]:=strInt(a[i]);
{...}
end.

Функция strInt(s:string):longint; переводит из строки в число.. ошибки не учитываются...
дальше сама прога проста.. вводится 10 строк и переводится в 10 чисел..
на основе того ,что я дал, ты можешь все сделать дальше..
еще вопросы есть?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Цитата(Oleg_Z @ 23.02.05 21:54)
Смотри-ка сюда...
Function strInt(s:string):longint;
  ss:=ss+(ord(s[i])-48)*trunc(Exp((length(s)-i)*Ln(10)));


еще вопросы есть?

Спасибики!
Тока один еще вопрос: а после транк'а что за выражение такое, т.е. что оно делает по алгоритму перевода строки в число?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


возведение в степень. Есть такая формула.
В данном случае возвожу 10 в степень соответствующую..


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Перенесено из темы "Формирование вектора"

этот алгорит проверки на "не число" не в цикле у меня работает. А потом у меня должно происходить формирование вектора. И здесь такая ситуация-> с первым числом все нормально, а потом происходит выход из цикла. Идет переход на формирование вектора.
Код

...
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лед. число> и т.д.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;
{ далее по тексту }


Теперь пользователь просто не сможет ввести те символы, которые он вводить не должен...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Так же это практически всю программу придется переписывать. А у меня уже все практически готово =(( Даж проверку на max значение сделала, когда можно вводить какие угодно символы. И все работает +) Тока когда в цикл подставляю, идет обработка тока первого элемента и все. Может можно как-нибудь сделать, чтобы не переписывать smile.gif

Сообщение отредактировано: >hamka< -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


И еще такой вопросик. В программе я хочу проверить нажатую клавишу на <Enter>
Что я должна написать ?
Код
if n=……? then writeln.

как символ это не представить. А как символ из аски < Enter> как называется? Еще я прочитала про какие-то коды опроса клавиатуры =)).
Что это такое ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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)
как символ это не представить
blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Объединено из темы: "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> как на некорректное значение? Ведь раньше все работало, а по мере увеличения проги работать перестало! Теперь просто переход на новую строчку и вылет из программы. Что делать?

Продолжайте обсуждение своей задачи в одном топике
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


"жуть. " (С)

1. убрать метки.
2. показать весь код.

3. тогда поговорим.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Вот программа, которая не работает. не знаю почему =)) не вижу я своих ошибок.
она простая. многие в моей группе ее за 2 часа написали. причем у них программа работала даже с ошибками в коде, которые видели все. а у меня...
я плачу =((


а вот собственно и задание.
Получение от пользователя до 10 ( и 10) целых чисел. Сортировка , вывод на экран.
все элементы-целые простые числа. Цель -> максимальная защита "от дурака", т.е. хоть ногами по клавиатуре прыгай, но программа должна быть полностью рабочей ( без каких-либо вылетов)


Прикрепленные файлы
Прикрепленный файл  LABA_1.PAS ( 3.78 килобайт ) Кол-во скачиваний: 289
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Нет уж, увольте ... Разбираться в такой программе просто несерьезно... Сплошные GOTO... Избавитесь от них, тогда пожалуйста. А так - :no:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


вот программа. работает по заданию. Тестил в 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.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Вот моя модифицированная программа, но она кажеЦа не работает вообще =))
Такая глючная. Ужас!
если набрать число, то вводится тока одно. При наборе букв, вообще вылетает. Недочетов масса. Мож как нибудь можно свою передедать? Там ведь только на <Enter> не реагирует. + цикл не проходит . ( LABA_1)


Прикрепленные файлы
Прикрепленный файл  L_1.PAS ( 1.67 килобайт ) Кол-во скачиваний: 272
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


а чем не устраивает тот вариант что я предложил?
может там просто что-то не понятно тебе?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


ну, во-первых, все-таки вылетает.
потом у меня программа диалоговая, т.е. если не цифры - сообщение и повторный ввод. А в этой все воспринимается. И самое главное "вылетает"

Плиз, помогите кто-нить передалать мою, чтобы не было гоуту, и чтобы работало smile.gif
Мне надо сдавать уже в четверг. Это вопрос гордости Ж)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


1. она не вылетает.
2. а исправить программу для повторного ввода слабо???


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 20:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name