Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
All
1757 / 436 / 43
Регистрация: 09.04.2009
Сообщений: 2,589
#1

Удвоить каждую букву - C++

09.04.2009, 18:47. Просмотров 1921. Ответов 9
Метки нет (Все метки)

Здравствуйте всем. С++. Пытаюсь написать программу.
Возможно это что-то элементарное, но не получается.
Необходима ваша помощь. Растолкуйте,
как удвоить каждую букву.Вот моё творение.
Задача: Удвойте каждую букву в заданном тексте.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Udwoenie
#include<stdio.h>
#include<conio.h>
void main()
{
 char tx[80];
 int i;//num.simvol
  printf ("Input text:\n");
  scanf("%s",tx);
     for (i=0;tx[i];++i);
     tx[i]=tx[i]+tx[i];
     for (i=0;tx[i];i++);
    printf ("Rezult:%s\n",tx);
   getch();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2009, 18:47     Удвоить каждую букву
Посмотрите здесь:

Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» - C++
Задание: Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; ...

Составить программу для кодирования некоторого текста до 50 символов, заменяя каждую букву на пятую после нее букву из а - C++
Составить программу для кодирования некоторого текста до 50 символов, заменяя каждую букву на пятую после нее букву из алфавита. Алфавит...

Как удвоить каждую цифру трицифрового числа? - C++
Как можно удвоить каждую цифру трицифрового числа? Например 123 - 112233

В алфавитно-цифровой строке удвоить каждую цифру - C++
Задание: В алфавитно-цифровой строке удвоить каждую цифру. помогите, пожалуйста, вообще не знаю как это написать... вот пробовала через...

В текстовом файле поменять каждую букву "а" на букву, заданную пользователем - C++
Дан текстовый файл, поменять в нем букву &quot;а&quot; на задаваемую пользователем.

Каждую нечетную цифру удвоить, а к четным цифрам дописать 01 в двоичном коде - C++
Здраствуйте. Стоит задача: Выполнить следующую обработку входного потока данных: Данные поступают с клавиатуры до символа «0»....

В каждом идентификаторе с нечетным порядковым номером удвоить последнюю букву - C++
Задана последовательность идентификаторов, разделенных сериями пробелов. Последовательность задана строкой символов (string) заканчивается...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
БурундукЪ
9533 / 2530 / 66
Регистрация: 17.02.2009
Сообщений: 10,364
09.04.2009, 18:59     Удвоить каждую букву #2
Цитата Сообщение от All Посмотреть сообщение
for (i=0;tx[i];++i);
здесь ; не нужно
это:
Цитата Сообщение от All Посмотреть сообщение
for (i=0;tx[i];i++);
зачем?
All
1757 / 436 / 43
Регистрация: 09.04.2009
Сообщений: 2,589
09.04.2009, 19:21  [ТС]     Удвоить каждую букву #3
tx[i]=tx[i]+tx[i]; Если это удвоение, то
это for (i=0;tx[i];i++); создание строки с удвоенными буквами.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 19:24     Удвоить каждую букву #4
ну вот так вот можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<conio.h>
 
void main()
{
    char tx[80];
    char tx2[80];
    int i,j;//num.simvol
 
    printf ("Input text:\n");
    scanf("%s",tx);
 
    for (i=0; i<40; i++)
    {
        tx2[2*i] = tx[i];
        tx2[2*i+1] = tx[i];
    }
 
    for (i=0; i<80; i++)
        tx[i] = tx2[i]; 
 
    printf ("Rezult:%s\n",tx);
    getch();
}
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
09.04.2009, 20:41     Удвоить каждую букву #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include<string.h>
int main()
{
clrscr();
char s[80];
char x[80];
cout<<"vvodim stroky"<<endl;[
gets(s);
for (int i=0,j=0;i<strlen(s);i++,j++)
 {x[j]=s[i];cout<<s[i];cout<<x[j];}
getch();
return 0;
}
All
1757 / 436 / 43
Регистрация: 09.04.2009
Сообщений: 2,589
11.04.2009, 19:15  [ТС]     Удвоить каждую букву #6
Monte-Cristo, Андрейка
Спасибо за помощь.
Проясните пожалуйста там, где знак вопроса.

C++
1
for (i=0; i<40; i++)
Проход по введённому тексту
C++
1
2
 {
                tx2[2*i] = tx[i];
?
C++
1
2
  tx2[2*i+1] = tx[i]; 
                 }
?

C++
1
 for (i=0; i<80; i++)
Создание текста с удвоенными буквами
C++
1
 tx[i] = tx2[i];
?
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
11.04.2009, 20:18     Удвоить каждую букву #7
у нас есть еще одна временная строка tx2... вот мы в нее и копируем символы, но два раза....
C++
1
2
tx2[2*i] = tx[i]; // компируем в четную позицию
tx2[2*i+1] = tx[i]; // компируем не в четную позицию
то есть, у нас получается, что при i=0 в позицию ноль, и в позицию один копируется первый символ из данной строки.... при i=1 в позицию 2 и в 3 копируется второй сивол... при i=2 в позицию 4 и 5 третий символ и т.д.


C++
1
2
for (i=0; i<80; i++)
   tx[i] = tx2[i];
а сдесь, мы присваеваем значение исходной строке, значение уже удвоинной строки... т.е. файтически затираем что было, и записываем уже удвоенные вариант
Практолок
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 12
12.04.2009, 06:09     Удвоить каждую букву #8
Мне кажеться проще начинать с конца строки, тогда и дополнительные массивы не понадобятся
Lil Crazy
6 / 6 / 1
Регистрация: 23.03.2009
Сообщений: 198
12.04.2009, 14:53     Удвоить каждую букву #9
Сам решал такую же прогу на си. Вот код:
C
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <conio.h>
 
int main (void)
{
    FILE *InputFile, *OutputFile; //обьявляем текстовые файлы
    unsigned char code; //переменная для хранения кода символа
    char string1[256], string2[256]; //строки для текстовых файлов
    char path_in [128], path_out [128]; //строки для путей
 
    printf("Enter input file: "); //запрос имени входящего файла
    scanf("%s",path_in); 
    
    if ((InputFile=fopen(path_in, "r")) == NULL ) //если не удалось открыть файл, то
    {
        perror(path_in); //выводим об этом сообщение 
        getch();
        return 1; //и выходим
    }
    
    printf("Enter output file: "); //запрос имени выходного файла
    scanf("%s",path_out);
    
    printf("\n");
    printf("%s\n","Processing..."); //вывод сообщения о работе   
 
    if ((OutputFile=fopen(path_out, "w+")) == NULL ) //если не удалось открыть файл, то
    {
        perror(path_out); //выводим об этом сообщение 
        getch();
        return 1; //и выходим
    }
    
    while(1)
    {
        fread(&code,1,1,InputFile);
        fwrite( &code, sizeof(char), 1, OutputFile ); //если литера, вставляем ещё такую же
        if( ( code > 64   && code < 91   ) ||( code > 96   && code < 121  ) ||( code > 191  && code < 254  ) ||   code == 168 || code == 184 )
            fwrite( &code, sizeof(char), 1, OutputFile ); //записываем изменения в файл
        if(feof(InputFile))     //если прочитали конец файла, выходим из цикла
            break;
    }
    
    printf("%s\n","All liters doubled"); //вывод сообщения об удачном удваивании
 
    //устанавливаем указатели на начало файлов
    rewind(InputFile);
    rewind(OutputFile);
 
    printf("\nInput text:\n");
    
    while(1) 
    {
        fgets(string1, 256, InputFile);
        printf("%s",string1); //вывод построчно с переходом на следующую строку
        if(feof(InputFile))
            break;
    }
 
    printf("\n\nOutput text:\n");
    
    while(1) 
    {
        fgets(string2, 256, OutputFile);
        printf("%s",string2); //вывод построчно с переходом на следующую строку
        if(feof(OutputFile))
            break;
    }
    
    //закрываем оба текстовых файла
    fclose(InputFile);
    fclose(OutputFile);
 
    getch();
    return 1;
}
Прога считывает только литеры из первого текстового файла и записывает удвоенные во второй.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2009, 23:59     Удвоить каждую букву
Еще ссылки по теме:

В тексте каждую букву “б” заменять на “ку” - C++
В тексте каждую букву “б” заменять на “ку” (например, из слова «абракадабра» получится «акуракадакура»).

Удалить в тексте каждую вторую букву от «b» до «d» - C++
Дан текст. Удалить в нём каждую вторую букву от «b» до «d Цикл не правильно работает(Как записать чтобы каждую вторую удалял в этом...

В предложении заменить каждую букву многоточием. - C++
7. Помогите, пожалуйста решить задачу в С++. В предложении заменить каждую букву многоточием.

Убрать каждую вторую букву слова - C++
Ввести слово.убрать каждую вторую букву к.вывести результат на экран.

Удалить из слова каждую третью букву - C++
Напишите программу, удаляющую из слова каждую третью букву. С++ пж,помагите


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

Или воспользуйтесь поиском по форуму:
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
13.04.2009, 23:59     Удвоить каждую букву #10
Если не обязательно создавать строку с удвоенными буквами, можно вообще без строк
Код
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
	cout << "Enter a string: ";
	cin.peek();
	cout << "Result: ";
	char c = 0;
	while (c != '\n')
	{
		cin.get(c);
		cout << c << c;
 	}
	cin.peek();
	return 0;
}
Yandex
Объявления
13.04.2009, 23:59     Удвоить каждую букву
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru