Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/55: Рейтинг темы: голосов - 55, средняя оценка - 4.85
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599

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

09.04.2009, 18:47. Показов 11042. Ответов 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();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2009, 18:47
Ответы с готовыми решениями:

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

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

Удвоить каждую последовательность символов ‘da’ в строке
Дана строка символов T. Напишите программу, которая удвоит каждую последовательность символов ‘дa’ в строке T.

9
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
09.04.2009, 18:59
Цитата Сообщение от All Посмотреть сообщение
for (i=0;tx[i];++i);
здесь ; не нужно
это:
Цитата Сообщение от All Посмотреть сообщение
for (i=0;tx[i];i++);
зачем?
0
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
09.04.2009, 19:21  [ТС]
tx[i]=tx[i]+tx[i]; Если это удвоение, то
это for (i=0;tx[i];i++); создание строки с удвоенными буквами.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 19:24
ну вот так вот можно
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();
}
1
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
09.04.2009, 20:41
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;
}
1
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
11.04.2009, 19:15  [ТС]
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];
?
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
11.04.2009, 20:18
у нас есть еще одна временная строка 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];
а сдесь, мы присваеваем значение исходной строке, значение уже удвоинной строки... т.е. файтически затираем что было, и записываем уже удвоенные вариант
1
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 12
12.04.2009, 06:09
Мне кажеться проще начинать с конца строки, тогда и дополнительные массивы не понадобятся
0
 Аватар для Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
12.04.2009, 14:53
Сам решал такую же прогу на си. Вот код:
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;
}
Прога считывает только литеры из первого текстового файла и записывает удвоенные во второй.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
13.04.2009, 23:59
Если не обязательно создавать строку с удвоенными буквами, можно вообще без строк
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2009, 23:59
Помогаю со студенческими работами здесь

Удвоить каждую подстроку состоящую из одинаковых символов
Дана строка S. Каждую подстроку длиной n &gt; 1, состоящую из одинаковых символов, заменить на подстроку из тех же символов Нужна простая...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru