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

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

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

 
 Ответить  Открыть новую тему 
> И снова строки..., Массив элементов строки
сообщение
Сообщение #1


Гость






Задача.
В строке содержаться целые числа,разделенные запятыми. после последнего числа стоит точка. Создать массив из этих чисел.

{Строку вводим с клавиатуры. А потом выводим числа в строке}

Помогите!Не могу понять как создать этот массив...sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


В чем проблема? Как выделить числа из строки? Или как их перевести в числа?
вот эту темку читал(а)? Разбиение на слова. Все способы.


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


Гость






Да читала. И всё равно не могу понять,как выделить именно целые числа,если каждая цифра будет считаться как элемент строки.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

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

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


Вот если по-простецки, то где то так:
..
i:=0; kl:=0;
fillchar(x,sizeof(x),0);
repeat
inc (i); inc (kl);
while s[i] in ['0'..'9'] do begin
x[kl]:=x[kl]*10+ord(s[i])-$30;
inc (i);
end;
until s[i]='.';
for i:=1 to kl do writeln (x[i]);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






uses crt;
var s,x:string; i,k1:integer;

begin
clrscr;
writeln('Vvedite stroku iz tselih chisel cherez zapyatuy,v kontse tochka');
readln(s);
for i:=1 to length(s) do
if (s[i]<>',') and (s[i]<>'.')then begin
inc(k1);
x[k1]:=s[i];
end;
for i:=1 to k1 do write(x[i],' ');
readln;
end.


Я попыталась сделать эту программу...Вот что получилось.Не могу понять как сделать чтобы выводились именно числа, а не цифры.Помогите!Подалуйста.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


может, посмотришь на сообщение, которое оставил Malice?...


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


Гость






Цитата(Гость @ 22.03.2007 16:44) *

Вот что получилось.

У меня x не string, a array [1..255] of longint, что и дает возможно хранить числа, а не цифры.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Помощник капитана
****

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

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


Что-то в коде не видно массива ^^^
Может так с массивом:
var
x: array [1..25] of longint;
i,j,n: Integer;
s,s1,s2: string;
begin
j:=1;
readln(s);
s2:=s;
for i:=1 to length(s) do begin
if s[i] in [','] then begin
s1:=copy(s2,1,pos(',',s2)-1);
val(s1,x[j],n);
delete(s2,1,pos(',',s2));
inc(j);
end else if s[i] in ['.'] then begin
s1:=copy(s2,1,pos('.',s2)-1);
val(s1,x[j],n); break; end;
end;

Тут идет преобразование в числа, код не компактный blum.gif , тебе выбирать.. smile.gif


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

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

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


Чтоб непоняток не было полностью приведу:
var x:array [1..255] of longint;
i,kl:integer;
s:string;
begin
{readln (s);}
s:='565,44325,6754,2134,5,34.';
i:=0; kl:=0;
fillchar(x,sizeof(x),0);
repeat
inc (i); inc (kl);
while s[i] in ['0'..'9'] do begin
x[kl]:=x[kl]*10+ord(s[i])-$30;
inc (i);
end;
until s[i]='.';
for i:=1 to kl do writeln (x[i]);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Malice, я не могу понять,как ты вывел формулу x[kl]:=x[kl]*10+ord(s[i])-$30... то есть не понимаю почему $30 в конце. Объясни,если нетрудно. Спасибо за решение задачи. smile.gif
Спасибо и Артемию smile.gif
P.S. Сразу про решение задачи от Malice не написала,потому что набрать его в Паскале не было возможности(
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Цитата(Гость @ 23.03.2007 16:31) *

Malice, я не могу понять,как ты вывел формулу x[kl]:=x[kl]*10+ord(s[i])-$30... то есть не понимаю почему $30 в конце.

$30 - это код символа "0", т.е. таким образом переводим символы от "0".."9" в числа 0..9.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Спасибо,теперь понятно.
 К началу страницы 
+ Ответить 

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

 





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