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

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

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

> дописать все гласные латинские буквы из строки S1 в конец S2, Функции...вроде всё так, но что-то не то
Valkirie
сообщение 26.04.2005 20:32
Сообщение #1


Новичок
*

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

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


Воть... решаю задачку и не могу понять где у меня ошибка... люди умные, гляньте плииз ;)

Условие задачи:
Разработать функцию Add(const S1,S2:string):string, дописывающую все гласные латинские буквы из строки S1 в конец S2 и выдающей получившуюся строку в качестве результата. С помощью данной функции в каждую строку из введенного набора дописать все гласные латинские буквы из предыдущей строки. Гласными считаются следующие буквы: aeiouyAEIOUY.

Вход
В первой строке входа дано количество строк N. Затем следуют N строк, по одной в каждой строке.
Выход
На выход напечатать строки результата, по одной в каждой строке.

Пример
Вход:
3
abc
abd
as

Выход:
abc
abda
asa


Вот мой код...
Код


 function Add(S1, S2:string):string;
var i:integer;
begin
for i:=Length(S1) downto 1 do
begin
if (S1[i]='A') or (S1[i]='E') or (S1[i]='I') or (S1[i]='U') or
(S1[i]='O') or (S1[i]='Y') or (S1[i]='a') or (S1[i]='e') or
(S1[i]='u') or (S1[i]='o') or (S1[i]='y') then Insert(S1[i],S2,Length(S2)+1);
end;
Result:=S2;
end;

 var
 S1,S2:string;
 N,i:integer;
 Mas: array [1..100] of string;
 begin
 Write('');
 ReadLn(N);
 for i:=1 to N do
 begin
 Write('');
 ReadLn(Mas[i]);
 end;
 for i:=1 to N-1 do
 begin
 S1:=Mas[i];
 S2:=Mas[i+1];
 S2:=Add(S1,S2);
 WriteLn(S2);
 ReadLn;
 end;
end.


Что-то у меня на выходе не то получается... ;(( Help !

Сообщение отредактировано: мисс_граффити - 13.06.2007 10:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов(1 - 9)
FreeMan
сообщение 26.04.2005 20:50
Сообщение #2


-
****

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

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


попробуй в последнем цикле заменить
Код
for i:=1 to N-1 do
begin
S1:=Mas[i];
S2:=Mas[i+1];

на
Код

for i:=n-1 downto 1 do
begin
S1:=Mas[i+1];
S2:=Mas[i];


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.04.2005 20:53
Сообщение #3


Гость






Ну, зачем же так длинно? Можно и покороче:
const
vowels = ['A', 'E', 'I', 'O', 'U', 'Y'];

function Add(const S1, S2: string): string;
var
i: byte;
s: string;
begin
s := s2;
{ Зачем здесь надо было идти от конца строки к началу? }
for i := 1 to Length(S1) do
if upcase(s1[i]) in vowels
then s := s + s1[i];
Add := s;
end;

var
N, i: integer;
Mas: array [0 .. 100] of string;
begin
mas[0] := ''; { это чтобы и первая строка распечатывалась }
Write('n = '); ReadLn(N);
for i := 1 to N do begin
Write(i, '.s = '); ReadLn(Mas[i])
end;

for i:=0 to N-1 do
begin
Writeln(add(mas[i], mas[i + 1]));
ReadLn
end;
end.
 К началу страницы 
+ Ответить 
Valkirie
сообщение 26.04.2005 21:03
Сообщение #4


Новичок
*

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

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


Спасибо...
только вот серверу не нравится это решение...видимо нужно чтобы на выходе все три строки сразу вылетали...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 26.04.2005 21:09
Сообщение #5


-
****

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

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


2Valkirie: какому серверу?


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.04.2005 21:11
Сообщение #6


Гость






Опять TIMUS? :o
 К началу страницы 
+ Ответить 
Valkirie
сообщение 26.04.2005 21:12
Сообщение #7


Новичок
*

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

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


Институтскому...
Я же не от нечего делать задачки тут сижу решаю...

А что такое TIMUS ?

Есть такой "acm.timus.ru" для решения задач online smile.gif

Сообщение отредактировано: volvo - 26.04.2005 21:34
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Valkirie
сообщение 26.04.2005 23:47
Сообщение #8


Новичок
*

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

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


нет..нет... никаких тимусов... ;(((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.04.2005 23:57
Сообщение #9


Гость






Цитата(Valkirie @ 26.04.05 21:03)
видимо нужно чтобы на выходе все три строки сразу вылетали...

Ну, если только убрать ReadLn из цикла...
for i:=0 to N-1 do
Writeln(add(mas[i], mas[i + 1]));


А иначе никак не получится сделать - чтоб сразу вылетали... Это ЗДЕСЬ 3 строки, а если будет 10?
 К началу страницы 
+ Ответить 
FreeMan
сообщение 27.04.2005 15:42
Сообщение #10


-
****

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

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


А случайно не нужно читать все данные из файла и вывод делать в файл???? Может серверу нужна только функция..


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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