Добро пожаловать на форумы Боевого Народа (бывший форум Live.CNews.ru)!

ВАЖНЫЕ ТЕМЫ: FAQ по переезду и восстановлению учеток | Ошибки и глюки форума.
О проблемах с учетными записями писать СЮДА.
Люди помогите пожалуйста написать программу на паскале - Форумы Боевого Народа
IPB

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
Люди помогите пожалуйста написать программу на паскале
сообщение 16.6.2006, 15:34
Сообщение #1





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Дан массив слов, нужно написать программу, которая бы переписывала в другой массив слова начинающиеся с гласной.
Решите пожалуйста. Заранее благодарю
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 16.6.2006, 16:31
Сообщение #2





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Код
const

 NumOfWords = 10;                               //количество слов в массиве



var

 source, dest: array [1..NumOfWords] of String; // массивы первый и второй

 s: set of char;                                // множество букв с которых должно начинаться слово

 i, j: Integer;                                 // переменные циклов



procedure InitSourceArray;

begin

 // Инициализация первого массива, ввод с клавы сам оформь

 source[1]:='Амелин';

 source[2]:='петя';

 source[3]:='яна';

 source[4]:='аня';

 source[5]:='маша';

 source[6]:='саша';

 source[7]:='Лёва';

 source[8]:='вова';

 source[9]:='алеша';

 source[10]:='иван';

end;



procedure DisplayDestArray;;

begin

 // Тут опиши вывод

end;



procedure MoveWords;

begin

 // Буквы с которых начинаются слова, которые надо внести в другой массив

 s := ['а','я','у','ю','ы','и','о','ё','е','э'];

 s := s + ['А','Я','У','Ю','Ы','И','О','Ё','Е','Э'];



 // Инициализация первого массива (здесь просто присвоение, можно осуществить например ввод с клавы)

 InitSourceArray;



 // Непосредственное перемещение слов, начинающихся с нужной буквы

 j:=1;

 for i:= 1 to NumOfWords do

   if source[i,1] in s then

     begin

       dest[j] := source[i];

       inc(j);

     end;



 // Вывод значений

 DisplayDestArray;

end;
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 1.7.2006, 21:57
Сообщение #3





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



SIMBA Имхо чуть не то... smile.gif
Дельфей дома нет (надоели на работе :lol: ), но суть объясню.
1. Дан массив слов... -> массиву лучше быть динамическим, а не статическим как у тебя, тогда не нужна будет переменная NumOfWords и соответственно привязка на количество элементов.
2.Если он (массив) уже дан, зачем его еще и оформлять программно? И тем более с клавиатуры. Массивом может выступать просто и некий текст. Тогда лучше прописать занесение данных из некоего текста (набора слов) в массив.
Тут сама задачка поставлена не очень пОлно.
p1caso А тебе следовало изложить условия более подробно... ;)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 1.7.2006, 22:59
Сообщение #4





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



gNEV
Если брать динамическиую переменную (array of string), то задача вообще упрощается (если память мне не изменяет - я с паскаля 7 лет назад слез): по указателю можно к любому символу обратиться. например если s:string, то s(0) - первый символ. (кажется указатели с 0 идут...)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 1.7.2006, 23:58
Сообщение #5





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



$t@lker Так и есть, только динамическому массиву еще желательно длину определить функциевиной SetLength.
Если s:string то тогда s[0]:= ... (строки с нуля идут, а массивы с 1).
Вот у SIMBA так и написано if source[i,1] in s then (но что-то мне подсказывает, что так работать не должно, имхо конечно...) я бы создал переменную s:string и тогда (если брать статический массив):
for i:= 1 to NumOfWords do
begin
s:=source[i];
//а уже потом
if s[0] in s then
...
end;
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 2.7.2006, 5:01
Сообщение #6





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



На паскале нет динамических массивов. Они появились только в Object Pascal, начиная с Дельфи 4.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 2.7.2006, 7:31
Сообщение #7





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



kilativv
да... а я использовал динамические массивы array of string в TP7 на практике...
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 6.7.2006, 6:43
Сообщение #8





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Очень странно smile.gif И насколько он был динаамичный. Может это был список с указателями?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 6.7.2006, 10:18
Сообщение #9





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



kilativv Насчет TP7 не могу точно что-либо сказать, вполне возможно, что там и есть динамические массивы, а вот в OP они появились только с 4-й версии, это да. Ну я ж говорил некорректный вопрос изначально. Программа на Паскале...каком Паскале? smile.gif Вобщем лирика это все... smile.gif
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 6.7.2006, 16:00
Сообщение #10





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



kilativv
эээх, последний раз практически использовал паскаль(TP7) году так 98-ом(зарпалта для местного молокозавода), поэтому исходники далеко похерены, но если есть терпение подождать - обязательно выложу кусок. Я и сам конечно мог забыть, но то что все динамические использовал - эт точно: писал под 386-ю машину, поэтому даже Crt модуль не использовал. Весь ВВ на прямой адресации к памяти ради быстродействия и уменьшения exe-шника. ;)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Jediroman
сообщение 26.11.2006, 15:55
Сообщение #11


Младший сержант
***

Группа: Пользователи
Сообщений: 1638
Регистрация: 8.11.2017
Пользователь №: 12401



Люди, если вы не звери, помогите решить задачку по информатике. Значит, задача:
даны три стороны треугольника, найти их S и P. Формула вычисления площади треугольника -
квадратный корень из P(p-a)(p-B)(p-c), где р-полупериметр. Полупериметр, если мне не
изменяет склероз - это a+b+c/2. Пытаюсь решить эту задачу, пишу на Паскале такой код:
Код
program z10;
uses crt;
var a,b,c,P,S,pp:real;
begin
write('Введите три стороны треугольника');
read(a,b,c);
pp:=a+b+c/2;
S:=sqrt(P*(pp-a)*(pp-b)*(pp-c));
P:=a+b+c;
write(S, ' ', P);
end.

При тестировании выясняется, что S все время высчитывается неправильно - он при любых значениях
a,b,c равен нулю. Ошибка явно в строчке S:=sqrt(P*(pp-a)*(pp-b)*(pp-c));. Предполагаю, что намудрил что-то со скобками или типами данных. Постарайтесь помочь до утра, мне завтра на зачет ехать, а я два урока отсутствовал, надо ж хотьчто-то привезти. Две задачи уже решил, с третьей - ваша помощь нужна.
ЗЫ Переменной pp я обозначил полупериметр.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 26.11.2006, 20:42
Сообщение #12





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Может сначала вычислить P, а потом S? Ато в формуле площади периметр неизвестен.
Кстати, по-моему правильно будет S:=sqrt(pp*(pp-a)*(pp-B)*(pp-c)); , т.е. при выч. площади используется ТОЛЬКО полупериметр.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Jediroman
сообщение 26.11.2006, 21:18
Сообщение #13


Младший сержант
***

Группа: Пользователи
Сообщений: 1638
Регистрация: 8.11.2017
Пользователь №: 12401



.BrAT
Точно, поставил сначала вычисление периметра, и пошел! Ну все у меня не как у людей! :lol:
+ тебе, реально и вовремя помог!
О! Нашел еще одну ошибку! При вычислении pp a+b+c надо в скобки заключать. Иначе неправильно считает.
Но теперь я готов.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 26.11.2006, 22:11
Сообщение #14





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Jediroman
При первом использовании в теле write желательно использовать writeln. (бывают глюки потом с вводом)
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Jediroman
сообщение 27.11.2006, 5:56
Сообщение #15


Младший сержант
***

Группа: Пользователи
Сообщений: 1638
Регистрация: 8.11.2017
Пользователь №: 12401



$t@lker
Знаю. Но это, так сказать, мелкие ошибки, устраняются на месте, в классе, дома я только на общую работоспособность проверяю.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 27.11.2006, 9:39
Сообщение #16





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Jediroman
Да эт не ошибка. yes.gif
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 16.3.2007, 20:17
Сообщение #17





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Можете помочь с написанием программы....Нужно написать прогу, которая преобразовывала бы строку, заменяя каждое вхождение заданного слова другим заданным слововом, причём прога должна быть сделана через рекурсию
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 16.3.2007, 23:20
Сообщение #18





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Red Kaktus
function Replace_with_recursion(str, sub1, sub2: string): string;
var aPos:Integer;
begin
aPos:=Pos(sub1, str);
if(aPos>0) then begin
Result:=Result+Copy(str,1,aPos-1)+sub2;
Result:=Result+Replace_with_recursion(Copy(str,aPos+length(sub1),length(str)),su
b1,sub2);
end else
Result:=Result+str;
end;


заменяет в строке str строку sub1 на строку sub2
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 17.3.2007, 11:31
Сообщение #19





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



2 antonn

Спасиб большое
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
сообщение 17.3.2007, 11:35
Сообщение #20





Группа:
Сообщений: 0
Регистрация: --
Пользователь №:



Пжалстаsmile.gif
хотя было бы проще без рекурсии:
function ReplaceSub(str, sub1, sub2: string): string;
var
aPos: Integer;
rslt: string;
begin
aPos := Pos(sub1, str);
rslt := '';
while (aPos <> 0) do
begin
rslt := rslt + Copy(str, 1, aPos - 1) + sub2;
Delete(str, 1, aPos + Length(sub1) - 1);
aPos := Pos(sub1, str);
end;
Result := rslt + str;
end;
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

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

 



Текстовая версия Сейчас: 23.5.2024, 11:36
Консультации адвоката по уголовным делам. Бесплатно. По всей России