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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте всем. С++. Пытаюсь написать программу.
Возможно это что-то элементарное, но не получается.
Необходима ваша помощь. Растолкуйте,
как удвоить каждую букву.Вот моё творение.
Задача: Удвойте каждую букву в заданном тексте.
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2009, 18:47
Ответы с готовыми решениями:

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

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

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

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

9
10065 / 2622 / 84
Регистрация: 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++);
зачем?
0
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
09.04.2009, 19:21  [ТС] 3
tx[i]=tx[i]+tx[i]; Если это удвоение, то
это for (i=0;tx[i];i++); создание строки с удвоенными буквами.
0
2816 / 1407 / 107
Регистрация: 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();
}
1
425 / 229 / 87
Регистрация: 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;
}
1
1766 / 443 / 45
Регистрация: 09.04.2009
Сообщений: 2,599
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];
?
0
2816 / 1407 / 107
Регистрация: 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];
а сдесь, мы присваеваем значение исходной строке, значение уже удвоинной строки... т.е. файтически затираем что было, и записываем уже удвоенные вариант
1
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 12
12.04.2009, 06:09 8
Мне кажеться проще начинать с конца строки, тогда и дополнительные массивы не понадобятся
0
6 / 6 / 2
Регистрация: 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;
}
Прога считывает только литеры из первого текстового файла и записывает удвоенные во второй.
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
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;
}
0
13.04.2009, 23:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2009, 23:59
Помогаю со студенческими работами здесь

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

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

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

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

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

Утроить каждую букву слова
утроить каждую букву слова. вычеркнуть из слова все буквы встречающиеся два раза и только два...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru