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

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

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

 
 Ответить  Открыть новую тему 
> Ход конем - "приветливость" програм, работа с масивом
Alex7
сообщение 4.12.2005 18:26
Сообщение #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.pascalnet.ru/index.php?showtopic=7406
http://forum.pascalnet.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 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 18:38
Сообщение #2


Гость






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

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

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


Пионер
**

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

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


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


Гость






Я тебя про первую спрашиваю !!!
Вторая меня не интересует. Одна тема - один вопрос.
 К началу страницы 
+ Ответить 
Alex7
сообщение 4.12.2005 21:24
Сообщение #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.pascalnet.ru/index.php?showt...&st=0&p=53403&#
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 21:28
Сообщение #6


Гость






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


Пионер
**

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

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


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

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


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


Пионер
**

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

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


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


Гость






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

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

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


Пионер
**

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

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


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

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

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

т.к. символы алфавита не являются разделителями, или знаковыми!
И чем те не ответ?
Чего ты еще хочешь, чтобы я саказал? wacko.gif blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.12.2005 10:41
Сообщение #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.


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


Пионер
**

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

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


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


Гость






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

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


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

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

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


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

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


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


Пионер
**

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

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


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

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

 



- Текстовая версия 20.07.2025 2:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"