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

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

09.04.2009, 18:47. Показов 11093. Ответов 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 / 2626 / 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
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru