Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 5
1

В заданном тексте удвоить каждую гласную букву

21.05.2015, 19:10. Показов 1176. Ответов 9
Метки нет (Все метки)

Ваша программа должна в заданном тексте удвоить каждую гласную букву.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2015, 19:10
Ответы с готовыми решениями:

В заданном тексте удвоить каждую согласную букву
Ваша программа должна в заданном тексте удвоить каждую согласную букву.

Удвоить каждую букву в заданном тексте
Ребят, помогите плиз решить задачи, до понедельника надо сделать :cry: 1)Определить число,...

Напишете программу, удваивающую каждую гласную букву в тексте на английском языке
Напишете программу, удваивающую каждую гласную букву в тексте на английском языке. Определите...

Каждую гласную букву в тексте заменить на символ "*"
В конце, когда надо напечатать изменений текст, печает только последнее введеное слово uses crt;...

9
Cyborg Drone
22.05.2015, 06:57
  #2

Не по теме:

Цитата Сообщение от Qusich Посмотреть сообщение
Ваша программа должна
Нет, не наша. Ваша.

0
283 / 281 / 84
Регистрация: 03.02.2013
Сообщений: 808
23.05.2015, 03:29 3
Я не сторонник решать задачи полностью, поэтому решил на случай английского алфавита и константого текста, подспорье есть, думай
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
const
  glasn :set of char =  ['a', 'e', 'y', 'u', 'i', 'o', 'A', 'E', 'Y', 'U', 'I', 'O'];
  MyText = 'a;asodowjfainfvakjnv;aioghsdbwadfjwaifhnesb';
var
  i:dword;
begin
  for i:=1 to Length(myText) do
  begin
    Write(MyText[i]);
    if MyText[i] in glasn then  Write(MyText[i]);
  end;
  Readln;
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31466 / 20513 / 7988
Регистрация: 22.10.2011
Сообщений: 35,637
Записей в блоге: 7
23.05.2015, 12:18 4
Это не решение задачи. Задача была не вывести текст с удвоенными гласными, а удвоить их в тексте. А текст тут остается неизменным.
0
283 / 281 / 84
Регистрация: 03.02.2013
Сообщений: 808
23.05.2015, 17:28 5
volvo
хм... да не вопрос
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const
  glasn :set of char =  ['a', 'e', 'y', 'u', 'i', 'o', 'A', 'E', 'Y', 'U', 'I', 'O'];
  MyString = 'a;asodowjfainfvakjnv;aioghsdbwadfjwaifhnesb';
 
var
  MyText:array of char;
  i:dword;
 
procedure LoadText(str:string);
var i:dword;
begin
  SetLength(MyText,Length(str));
  for i:=1 to Length(str) do MyText[i]:=str[i];
end;
 
procedure WriteText;
var i:dword;
begin
  for i:=1 to Length(MyText) do Write(MyText[i]);
end;
 
procedure InsertChar(pos:dword; ch:char);
var i:dword;
     tmp:array of char;
begin
  SetLength(tmp,Length(MyText)+1);
  for i:=Length(tmp) downto pos+1 do tmp[i]:=MyText[i-1];
  for i:=pos downto 1 do tmp[i]:=MyText[i];
  tmp[pos]:=ch;
  SetLength(MyText,0);
  MyText:=tmp;
end;
 
begin
  LoadText(MyString);
  WriteText;
  Writeln;
  i:=length(MyText);
 while i<>0 do
  begin
     if MyText[i] in glasn then  InsertChar(i+1,MyText[i]);
     dec(i);
  end;
  WriteText;
  Writeln;
  Readln;
end.
0
Модератор
8679 / 4336 / 2976
Регистрация: 17.08.2012
Сообщений: 13,803
23.05.2015, 20:35 6
abit, это в латинском алфавите буква "Y" - гласная, а в английском алфавите буква "Y" - согласная. Да, и ещё. Подпрограммы принято применять, если вызовов подпрограммы более одного из различных мест кода, или когда совершенно необходимо какие-либо сложные вычисления вынести в отдельный блок для придания коду лаконичности и облегчения читаемости кода. Программку можно покороче сделать. Недостойна она подпрограмм и всяких иных наворотов. Тем более, что для написания целевого алгоритма требуется одна строка кода.
Pascal
1
2
3
4
5
6
7
8
9
10
11
const vowels = 'АаУуОоЫыИиЭэЯяЮюЁёЕеAaEeIiOoUu';
var s: string;
    i: integer;
begin
  writeln('Введите строку:');
  readln(s);
  for i := length(s) downto 1 do if pos(s[i], vowels) > 0 then insert(s[i], s, i);
  writeln('Строка с удвоенными гласными буквами:');
  write(s);
  readln
end.
0
283 / 281 / 84
Регистрация: 03.02.2013
Сообщений: 808
23.05.2015, 21:47 7
Cyborg Drone
автор просил текст, ваша программа завалится не то что на тексте, на обычном абзаце
0
Модератор
8679 / 4336 / 2976
Регистрация: 17.08.2012
Сообщений: 13,803
24.05.2015, 00:00 8
Хм... В самом деле... Внимания не обратил, что "текст", а не "строка"... Для текста:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const vowels = 'АаУуОоЫыИиЭэЯяЮюЁёЕеAaEeIiOoUu';
var a: array of string;
    i, k: integer;
begin
  k := -1;
  writeln('Введите текст, пустая строка для окончания ввода:');
  repeat
    inc(k);
    setlength(a, k + 1);
    readln(a[k]);
    for i := length(a[k]) downto 1 do if pos(a[k, i], vowels) > 0 then insert(a[k, i], a[k], i);
  until length(a[k]) = 0;
  writeln('Преобразованный текст:');
  for i := 0 to k - 1 do writeln(a[i]);
  readln
end.
Добавлено через 5 минут
Это как?
Цитата Сообщение от abit Посмотреть сообщение
завалится
Ничего она не завалится. Выполнит то, для чего писана: удвоит гласные в строке.
0
283 / 281 / 84
Регистрация: 03.02.2013
Сообщений: 808
24.05.2015, 01:07 9
Cyborg Drone
а вот так...
вот беру вашу программу, вписываю чтобы читала из файла текст:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{$MODE FPC}
const vowels = 'АаУуОоЫыИиЭэЯяЮюЁёЕеAaEeIiOoUu';
var a: array of string;
    i, k: integer;
    fin :text;
begin
  k := -1;
  assign(fin,'input.txt');
  reset(fin);
  //writeln('Введите текст, пустая строка для окончания ввода:');
  while not eof(fin) do
  begin
    inc(k);
    setlength(a, k + 1);
    readln(fin, a[k]);
    for i := length(a[k]) downto 1 do if pos(a[k, i], vowels) > 0 then insert(a[k, i], a[k], i);
  end;
  close(fin);
 
  assign(fin,'out.txt');
  rewrite(fin);
  for i := 0 to k - 1 do writeln(fin,a[i]);
  close(fin);
 
end.
пихаю в файл текст из википедии:
Paul Tibbets (1915–2007) was a brigadier general in the United States Air Force, best known as the pilot of the Enola Gay, the first aircraft to drop an atomic bomb. Tibbets enlisted in the army in 1937 and qualified as a pilot the next year. After the Japanese attack on Pearl Harbor he flew anti-submarine patrols over the Atlantic. In July 1942 he became the deputy group commander of the 97th Bombardment Group, the first such group deployed to the United Kingdom as part of the Eighth Air Force. He flew the lead plane in the first American daylight heavy bomber mission against Occupied Europe on August 17, 1942, and again in the first American raid of more than 100 bombers on October 9. After flying 43 combat missions, he joined the staff of the Twelfth Air Force in North Africa. He returned to the United States in February 1943 to help with the development of the Boeing B-29 Superfortress. In September 1944, he was appointed the commander of the 509th Composite Group, which conducted the bombings of Hiroshima and Nagasaki. After the war, he was involved in the development of the Boeing B-47 Stratojet. He left the Air Force in 1966, working for Executive Jet Aviation until 1987.
В выходном файле:
Paauul Tiibbeets (1915–2007) waas aa briigaadiieer geeneeraal iin thee UUniiteed Staatees AAiir Foorcee, beest knoown aas thee piiloot oof thee EEnoolaa Gaay, thee fiirst aaiircraaft too droop aan aatoomiic boomb. Tiibbeets eenliisteed iin thee aarmy iin
феил... а моя бы пережевала этот текст
0
Модератор
8679 / 4336 / 2976
Регистрация: 17.08.2012
Сообщений: 13,803
24.05.2015, 02:01 10
Цитата Сообщение от abit Посмотреть сообщение
феил
Ясный день, фейл. Строка более 255 символов. Ну так, надо было под файл и под такую длину строки правильно мою программу переделывать, а не копипастить с потерей контекста применения. Вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const vowels = 'АаУуОоЫыИиЭэЯяЮюЁёЕеAaEeIiOoUu';
var a: array of ansistring;
    i, k: longword;
    f: text;
begin
  assign(f, 'c:\text.txt');
  reset(f);
  k := 0;
  while not eof(f) do
  begin
    setlength(a, k + 1);
    readln(f, a[k]);
    for i := length(a[k]) downto 1 do if pos(a[k, i], vowels) > 0 then insert(a[k, i], a[k], i);
    inc(k)
  end;
  rewrite(f);
  for i := 0 to k - 1 do writeln(f, a[i]);
  close(f)
end.
И для файла я бы по-другому, вообще-то, программу написал, как-то так, к примеру:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const vowels = 'АаУуОоЫыИиЭэЯяЮюЁёЕеAaEeIiOoUu';
      f_in = 'c:\text.txt';
      f_tmp = 'c:\temp.tmp';
var a: char;
    i: longword;
    f, t: file of char;
begin
  assign(f, f_in);
  reset(f);
  assign(t, f_tmp);
  rewrite(t);
  for i := 1 to filesize(f) do
    begin
      read(f, a);
      write(t, a);
      if pos(a, vowels) > 0 then write(t, a)
    end;
  close(f);
  erase(f);
  close(t);
  rename(t, f_in)
end.
(С двумя файлами проще: не тратится лишнее время на сдвиг элементов файла).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2015, 02:01

В заданном тексте заменить каждую гласную букву символом ‘*’, а согласную – символом ‘+’,
В заданном тексте заменить каждую гласную букву символом ‘*’, а согласную – символом ‘+’, ...

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

Напишите программу, удваивающую каждую гласную букву в тексте на английском языке. Определить количество добавляемых букв
Напишите программу, удваивающую каждую гласную букву в тексте на английском языке. Определить...

Утройте каждую букву в заданном тексте.
Помогите пожалуйста решить!СПАСИЬО! Утройте каждую букву в заданном тексте.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru