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

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

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

3 страниц V < 1 2 3 >  
 Ответить  Открыть новую тему 
> 4 задачи и куча вопросов...., практика.....
volvo
сообщение 11.07.2005 16:07
Сообщение #21


Гость






Цитата(klem4 @ 11.07.05 16:02)
конечно можно, если возможны все символы, то например так :
  ch:=chr(random(256));

Никогда больше так не делай... Ты должен генерировать символы, которые можно распечатать, не включая управляющие:
s := s + chr(32+random(255-32));
 К началу страницы 
+ Ответить 
Анка
сообщение 11.07.2005 16:26
Сообщение #22


Новичок
*

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

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


klem4, а что такое n? количество символов в строке что ли?
еще вопросик.... rolleyes.gif
как лучше реализовать возможность сохранить результаты в файл? после каждой конкретной задачи или в конце программы после всего? и как это сделать? blink.gif


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.07.2005 16:39
Сообщение #23


Гость






Цитата(Анка @ 11.07.05 16:26)
а что такое n? количество символов в строке что ли?
Я конечно не klem4 smile.gif Именно количество символов в строке... Причем я бы и это количество тоже генерировал random-ом
Цитата(Анка @ 11.07.05 16:26)
как лучше реализовать возможность сохранить результаты в файл? после каждой конкретной задачи или в конце программы после всего? и как это сделать?
Зависит от конкретных требований к программе, смотря что сохранять... Например, в этот раз ты посчитала сумму векторов, в другой раз - отсортировала массив... Сумму векторов тоже будешь сохранять?

Тогда делай что-то типа Log-файла, куда будут заноситься все удачно завершенные операции (естественно, только при последнем запуске...). Для этого программа должна просто дублировать вывод на экран выводом в текстовый файл... (файл должен открываться при старте программы - первой строкой, а закрываться - последней...)
 К началу страницы 
+ Ответить 
Анка
сообщение 11.07.2005 21:45
Сообщение #24


Новичок
*

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

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


а что такое count? какого типа? хм.....
volvo, а как это сделать? просто открыть вначале файл для записи, а в конце закрыть его? что я не совсем понимаю... blink.gif


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.07.2005 22:20
Сообщение #25


Гость






Count - типа Byte (больше нет смысла, все равно в строке только до 255 символов):
var
count, n: byte;
s: string;
begin
s := '';
n := 5 + random(255 - 5); { случайная длина от 5 до 255 символов }
for count := 1 to n do
s := s + chr(32+random(255-32)); { это я уже писал, почему }
end;


А насчет лог-файла... Вот тебе пример:

var f_log: text;
begin { начало основной программы }
assign(f_log, 'log.txt');
{$i-} rewrite(f_log); {$i+}
{ обработка ошибки открытия лог-файла }
...
Begin { здесь обрабатываем сложение векторов }
GetVector('first vector', v1);
GetVector('second vector', v2);

VAdd(v3, v1, v2); { v3 <- v1 + v2 }
PrintVector('result', v3); { печатаем на экран }

{ и записываем в лог }
WriteLn(f_log, 'add vector: v1=', v1.X:7:3, v1.Y:7:3,
' v2=', v2.X:7:3, v2.Y:7:3, ' result = ', v3.X:7:3, v3.Y:7:3);
End;
...
close(f_log); { перед самым концом программы закрываем лог-файл }
end.
 К началу страницы 
+ Ответить 
Анка
сообщение 12.07.2005 9:01
Сообщение #26


Новичок
*

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

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


volvo, а у меня n типа integer, зачем byte?
с файлом кошмар.... значит придется это писать, точнее одну часть в каждой части моей программы, но спасибо, вроде поняла. Я немного не так думала....
кстати, я сейчас конечно попробую на деле, но какие символы формируются при случайной генерации? Мне нужна латиница и цифры (П.С. это для 4 задачи)

Сообщение отредактировано: Анка - 12.07.2005 9:48


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.07.2005 9:36
Сообщение #27


Гость






Цитата(Анка @ 12.07.05 9:01)
volvo, а у меня n типа integer, зачем byte?

А зачем Integer? Все равно больше 255 нельзя, но если не хочешь менять - можно оставить Integer...
Цитата(Анка @ 12.07.05 9:01)
кстати, я сейчас конечно попробую на деле, но какие символы формируются при случайной генерации? Мне нужна лиитница и цифры
Если тебе только латиница и цифры, то вот так:
var ch: char;
{ здесь генерируешь n }
for i := 1 to n do begin
repeat
{ случайный символ в интервале ['0'(ноль) .. 'z'] }
ch := chr(48+random(122-48));

{ но в этом интервале есть и другие символы,
(точки, двоеточия, запятые...), и их не надо включать в строку }
until upcase(ch) in ['A'..'Z', '0'..'9'];
s := s + ch;
end;
 К началу страницы 
+ Ответить 
Анка
сообщение 12.07.2005 9:51
Сообщение #28


Новичок
*

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

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


volvo, спасибо, сейчас подредактирую, мне нужна как раз только латиница и цифры. Я просто в самой задаче в первом сообщении забыла изменить, русских букв на английских..

а на счет integer.... просто я уже сгенерировала n, и если не integer, то придется вводить новую переменную, а так n у меня уже есть, используется в др. месте, а переменых уже...... очень много rolleyes.gif :D

Сообщение отредактировано: Анка - 12.07.2005 9:54


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анка
сообщение 13.07.2005 12:18
Сообщение #29


Новичок
*

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

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


что-то у меня немного не получается с 4, так как я уже сделала ее для ввода с клавы и из файла, у меня программа для str {char}, вот теперь не знаю, что делать для случайно генерации, так как не хочется опять писать новую программу для генерации, а в старой при замене некоторых переменых типы не подходят....... а сдавать завтра.... sad.gif
вот моя программа, может кто подскажет:

begin
cifri:=0;
bukvi:=0;
repeat
repeat
read (str);
if str in ['a'..'z'] then
bukvi:=bukvi + 1;
if str in ['0'..'9'] then
cifri:=cifri + 1;
until eoln;
until str='*';
readln;
if bukvi>cifri then
writeln ('V dannoi stroke bol`she bukv');
if cifri>bukvi then
writeln ('V dannoi stroke bol`she cifr');
if cifri=bukvi then
writeln ('V dannoi stroke bukv i cifr porovnu');
writeln ('Dlja prodolgenija nagmite enter');
end;



--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.07.2005 12:44
Сообщение #30


Гость






Попробуй вот так:

begin
str_ok := True; { введи новую переменную }
case t of { t - твой выбор, откуда читать строку }
1: begin
{ читаешь строку с клавиатуры (только читаешь, не обрабатываешь !!!) }
end;

2: begin
{ Чтение строки из файла }
end;
3: begin
{ генерация случайной строки }
end;
4: begin
{ сообщение о выходе }
str_ok := False;
end;
end {case}

{ а здесь - собственно обработка строки (если нужно) }
if(str_ok) then begin

cifri:=0; bukvi:=0;

for i := 1 to length(str) do
if upcase(str[i]) in ['A'..'Z'] then bukvi:=bukvi + 1
else if str[i] in ['0'..'9'] then cifri:=cifri + 1;

if bukvi>cifri then writeln ('V dannoi stroke bol`she bukv')
else if cifri>bukvi then writeln ('V dannoi stroke bol`she cifr');
else writeln ('V dannoi stroke bukv i cifr porovnu');
end;
end;

Если я не ошибаюсь, этот блок Begin ... End надо поставить вместо того Case, что сейчас стоит под условием:
if (t=1) or (t=2) or (t=3) or (t=4) then
 К началу страницы 
+ Ответить 
Анка
сообщение 13.07.2005 12:58
Сообщение #31


Новичок
*

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

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


volvo, спасибо, куда писать, я знаю, но эта переменная чем мне поможет? если при генерацци случайной у меня все записывается в переменную s, как вы показали, а если изменить, чтобы все читалось в str, то типы не подходят! А так суть программы-то не меняется..... все равно надо что-то делать с вводом случайно или я что-то не понимаю? Готова признать, что неправа, если это так..... rolleyes.gif

Сообщение отредактировано: Анка - 13.07.2005 12:59


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 13.07.2005 13:32
Сообщение #32


Знаток
****

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

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


Я что-то не вижу где здесь переменная S...


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анка
сообщение 13.07.2005 14:12
Сообщение #33


Новичок
*

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

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


Цитата
Я что-то не вижу где здесь переменная S...

при случайной генерации....... смотрите выше.....volvo выкладывал, так вот там если заменить на str, то тип не подходит....
еще вопросик.... rolleyes.gif
я как всегда видимо что-то напутала...
вот часть моей программы:

writeln ('Vvedite nomer stroki');
write ('Vibrana stroka: ');
readln (k);
min:=mx[k][1];
jmin:=1;
for i:=k to k do {не знаю, как записать иначе, мне нужна лишь одна строка}
for j:=1 to size_col do
if mx[k][j]<min then begin
swap_cols(mx,jmin,j);
min:=mx[k][j];
jmin:=jmin+1;
end
else
j:=j+1;
{end;}


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

Сообщение отредактировано: Анка - 13.07.2005 14:14


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 13.07.2005 14:29
Сообщение #34


Знаток
****

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

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


Цитата(Анка)
у меня все записывается в переменную s, как вы показали, а если изменить, чтобы все читалось в str, то типы не подходят!
Ну так поменяй str на s ... В чём проблема вообще?

Для замены столбцов нужен только 1 цикл for j
j - столбец
k - строка

k := 3; { заменяем по 3-й строке, допустим. }

for j:=1 to size_col do
if mx[j, k]<min then begin
swap_cols(mx,jmin,j);
min:=mx[j, k];
jmin:=jmin+1;
end
else
j:=j+1;


Сообщение отредактировано: Romtek - 13.07.2005 14:30


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 13.07.2005 14:33
Сообщение #35


Знаток
****

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

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


mx[k][j] - такой формы записи в Паскале не существует. Так только в языке C пишут.
Надо так: mx[j, k]
j - столбец.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анка
сообщение 13.07.2005 14:38
Сообщение #36


Новичок
*

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

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


Цитата
Ну так поменяй str на s ... В чём проблема вообще?

так в том-то и проблема, что они разных типов, а там надо в s записать всю строку:
s := s + ch
. Если изменить даже тип переменной str на string (было char), то почему-то не идет сама программа.....
я уже пробовала..... там не нравится Паскалю вот это строчка при таком типе данных
[if str in ['a'..'z'] then


за программу спасибо, я не знала, что нужен один цикл.... rolleyes.gif


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анка
сообщение 13.07.2005 14:49
Сообщение #37


Новичок
*

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

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


Цитата
mx[k][j] - такой формы записи в Паскале не существует. Так только в языке C пишут.
Надо так: mx[j, k]
j - столбец.

тогда почему на этом же форуме есть запись вот такая:
 procedure print (var mx: tmatrix);
var i, j: integer;
begin
for i:=1 to size_col do
begin
for J:=1 to size_col do
write(mx[j][i]:4);
writeln;
end;
end;

я поэтому так и написала, так как использовала эту процедуру, а мне нужно было, чтобы номер столбца как раз был впереди....


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 13.07.2005 15:02
Сообщение #38


Знаток
****

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

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


Понятно. У тебя матрица определена по-другому. Значит всё нормально.

Вольво писал:
    for i := 1 to length(str) do
if upcase(str[i]) in ['A'..'Z'] then bukvi:=bukvi + 1
else if str[i] in ['0'..'9'] then cifri:=cifri + 1;


str: string;

str[i] - соответственно, типа char.
Если у тебя дана строка s, то замени все str на s.
Твой вариант был неверен.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анка
сообщение 13.07.2005 17:07
Сообщение #39


Новичок
*

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

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


или я что-то не понимаю, но нужные столбцы он менять не хочет все равно.... sad.gif


--------------------
девушка - программистка..... правда я еще только учусь.... :-))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.07.2005 17:28
Сообщение #40


Гость






Какие столбцы ???? О чем речь вообще? Об обработке матриц или строк? Я вообще уже ничего не понимаю...

В-общем, так: подобных тем ("4 задачи и куча вопросов") больше НЕ создавать. Одна тема - один вопрос. Эту тему я скорее всего закрою, ибо здесь уже полный балаган.
 К началу страницы 
+ Ответить 

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

 



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