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

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

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

> Ход конем - "приветливость" програм, работа с масивом
сообщение
Сообщение #1


Пионер
**

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

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


Как можно сделать так, чтобы не спрашивать у пользователя сколько тот в дальнейшем собирается ввести чисел(записываемые в масив), а сделать хд конем, притом вычислив их кол-во. Учитывая то, что он может разделить их (числа) любыми знаками препинания(кроме точки, разумеется); и чтобы "числа"! содержищие неправильные знаки(к пр. символы алфавита) не записывались, а после выводилось сообщение, что молвв в таком-то числе была ошибка при написании.?
unsure.gif
Вот как я пытался это организовать. Но, конечно же мне явно не хватает знаний norespect.gif
Repeat
Writeln('‚ўҐ¤лвм ўҐЄв®а ¤л©б­Ёе зЁбҐ«');
Readln(vector);
If Length(vector)>5 then
begin
l:=0;
For i:=1 to Length(vector)-4 do
begin
Val(Copy(vector,1,Pos(' ',vector)-1),arr[i],z);
Delete(vector,1,Pos(' ',vector));
Inc(l);
end;

И кстати:, Пожалуйсто!:
http://forum.pascal.net.ru/index.php?showtopic=7406
http://forum.pascal.net.ru/index.php?showt...&st=0&p=53351&#

И:
тут задачка, вроде решил, но не понимаю тогда почему такое странное задание:
Цитата
Определить, сколько ф-я() пересекает ось ОХ(т.е. знаки в 2-х соседних точках разные)на промежутке х1,х2 . Разсмотреть 125 рабноотдаленных точек на промежутке
А вот и задача:
Program Peretin_OX;
Uses CRT;
var x,dx,t1,t2:double;
x1,x2,number:longint;
Begin
clrscr;
textcolor(7);
Repeat
Writeln('‚ўҐ¤iвм x1,x2');
Readln(x1,x2);
If x1>=x2 then
writeln('ЌҐўiа­Ё© ¤i Ї §®­!');
Until x1<x2;
dx:=(x2-x1)/125;
number:=0;
x:=x1;
repeat
t1:=((ln(x*x))/ln(3))+cos(pi/3+2*x*x*x);
x:=x+dx;
t2:=((ln(x*x))/ln(3))+cos(pi/3+2*x*x*x);
if (t1*t2)<0 then number:=number+1;
until x>=x2;
textcolor(2);
writeln('Љi«мЄiбвм ЇҐаҐвЁ­iў § OX: ',number);
readln
End.

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


Гость






Alex7
вот тебе ввод программиста:
Цитата(Input)
120 -4a3, 73 -12 ??33

какие результаты ты хочешь получить? В порядке возникновения ошибок, перечисли...

И, вдогонку, еще вопрос: а куда, собственно, записывать получаемые данные? Организовать массив из 1000 элементов заранее? Это не есть хороший стиль...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

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

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


Я тебя не понял.
Ты говоришь про последнюю задачу?
Просто я спрашиваю, правильно ли я организовад прогу для исполнения этого:
Код
Определить, сколько ф-я() пересекает ось ОХ(т.е. знаки в 2-х соседних точках разные)на промежутке х1,х2 . [U] Разсмотреть 125 рабноотдаленных точек на промежутке[/U]
задания!?
Результаты просто вывести на экран, как и в проге.
================
А как на счет
Цитата
Как можно сделать так, чтобы не спрашивать у пользователя сколько тот в дальнейшем собирается ввести чисел(записываемые в масив), а сделать хд конем, притом вычислив их кол-во. Учитывая то, что он может разделить их (числа) любыми знаками препинания(кроме точки, разумеется); и чтобы "числа"! содержищие неправильные знаки(к пр. символы алфавита) не записывались, а после выводилось сообщение, что молвв в таком-то числе была ошибка при написании.?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Я тебя про первую спрашиваю !!!
Вторая меня не интересует. Одна тема - один вопрос.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

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

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


Цитата
Одна тема - один вопрос.

Ясно, но я эт типо для экономии.
Мне нужно просто переделать условие типа
 Repeat
Writeln('Введите кол-во чисел, которые после введете');
Readln(n);
If n<3 then
writeln('Надо не меньше 3-х!');
Until (n>=3) and (n<200);
Writeln('Введите',n,'чисел');
i:=1;
repeat
read(arr[i]);
Inc(i);
until (i>n);
readln;

На такое, типо чтобы не запрашивало кол-во чисел которые ты введешь.
Для удобства.
Слушай, мне щас уже так приперло эта задача, что ОЧЕНЬ прошу!
http://forum.pascal.net.ru/index.php?showt...&st=0&p=53403&#
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Alex7, я вторым постом задал вопрос, пока ты на него не ответишь, я ничего больше писАть сюда не буду...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

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

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


Цитата
120 -4a3, 73 -12 ??33

Из этих условий:
ошибка в 7-м везде кроме там тока знаки разделения и ...."+","-"
так что числа в масиве:
Цитата
120,73,-12,33


ЗЫ: я тя тогда не понял)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


volvo, я ж те ответил!
Очень надеялся на твой ответ! dry.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Alex7, я что просил?

Цитата
какие результаты ты хочешь получить? В порядке возникновения ошибок, перечисли...

Ты мне ответил? Тогда покажи, где перечисленно пошагово что должно произойти!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

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

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


Цитата
какие результаты ты хочешь получить? В порядке возникновения ошибок, перечисли...

Вот те результаты! Это числа, записаные в масив действительных чисел.
Цитата
120,73,-12,33

А вот ошибки :
Цитата
ошибка в 7-м

т.к. символы алфавита не являются разделителями, или знаковыми!
И чем те не ответ?
Чего ты еще хочешь, чтобы я саказал? wacko.gif blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Тогда вот так...

Вот сама функция:
function read_buffer(s: string;
var arr: array of double): integer;

const
max_word = 255;
delimiter = [#32, ',', '?', '!', ':'];

type
wrd_info = record
start, len: byte;
end;
var
words: array[1 .. max_word] of wrd_info;

function get_words(s: string): byte;
var
count: byte;
i, curr_len: byte;

begin
count := 0; i := 1;
while i <= length(s) do begin

while (s[i] in delimiter) and (i <= length(s)) do inc(i);

curr_len := 0;
while not (s[i] in delimiter) and (i <= length(s)) do begin
inc(i); inc(curr_len);
end;

if curr_len > 0 then begin
inc(count);
with words[count] do begin
start := i - curr_len;
len := curr_len
end;
end;

end;
get_words := count;
end;

var
cnt: byte;
i, ix, err: integer;
f: double;

begin
cnt := get_words(s); ix := -1;
for i := 1 to cnt do begin
val(copy(s, words[i].start, words[i].len), f, err);
if err <> 0 then begin
writeln('error in char #', words[i].start + err - 1)
end
else begin
inc(ix);
arr[ix] := f;
end;
end;
read_buffer := succ(ix);
end;


вот пример вызова:
const
max_size = 20;
var
s: string;
arr: array[1 .. max_size] of real;
i, count: integer;

begin
s := '120 -4a3, 73 -12 ??33';
count := read_buffer(s, arr);

for i := 1 to count do
writeln('#', i:2, ' = ', arr[i]:10:5);
readln;
end.


Ты это имел в виду?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

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

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


Да, это я и имел ввиду.
Но тут есть одно но:
Как думаетее, если я такую ф-ю влеплю рядом с прогой, длинной приблизительно как в примере, то как на меня посмотрять преподы- вопервых- пацан мозгами поехал, вовторых - захотел повымахиваться!
Но, как говорится, чего хотел, то и имеешь, вот только думал я что это можно организовать намного проще nea.gif
Кстати, (s[i] in delimiter) это так всегда можно писать, когда огласил перечисляемый тип константы в Const ?
А то я думал. что in работает только для множеств.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Просто так ничего не бывает ... Тебе нужна была универсальность - ты ее получил (за счет размера программы). Или тебе нужен размер программы, тогда делай как делал раньше...

Цитата
Кстати, (s[i] in delimiter) это так всегда можно писать, когда огласил перечисляемый тип константы в Const? А то я думал. что in работает только для множеств.
А delimiter по твоему это что?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Автооответчик
*****

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

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


Цитата
Кстати, (s[i] in delimiter) это так всегда можно писать, когда огласил перечисляемый тип константы в Const ?
А то я думал. что in работает только для множеств.

а delimeter разве не множество ? wink.gif


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


Пионер
**

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

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


Из объяснений преподователей я понимал, что множества можно задавать ТОЛЬКО так:
<имя> : set of <тип>
значит можно и в консте. ясно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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