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

Написать программу, которая будет зеркально выводить введенную строку - C++

Восстановить пароль Регистрация
 
karzuan
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 16
27.05.2014, 03:03     Написать программу, которая будет зеркально выводить введенную строку #1
Доброго времени суток!
Стоит задача: написать программу, которая будет зеркально выводить введенную строку.
Условие: нельзя использовать стандартные функции библиотеки <cstring> и им подобные
ОС: windows 7, x64
Компилятор: Dev-C++

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
# include <iostream>
# include <stdlib.h>
# include <conio.h>
 
 
using namespace std;
 
int main()
 
{
int i, j, k=0;
const int n=100;
char arr[n], mir[n];
 
cout<< "enter string: ";
 
gets(arr);
 
for(i=0; i< n ;i++) if(arr[i] ) k++;
 
cout<< endl << "mirror of your string is: ";
for( i=k, j=0; i>-1; i--, j++ ) 
         mir[j] = arr[i];
 
cout<< mir;
 
 
return 0;
    
}
Добавлено через 26 минут
добавлю комментарии:
C++
1
2
3
4
for(i=0; i< n ;i++) if(arr[i] ) k++;// length of string
 
cout<< endl << "mirror of your string is: ";
for( i=k, j=0; i>-1; i--, j++ ) // content of the last index of arr copy to the content of the first index mir, and so on till the arr[0]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 03:03     Написать программу, которая будет зеркально выводить введенную строку
Посмотрите здесь:

C++ Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию
нужно написать программу которая будет вместо введенных пользователем чисел, выводить* C++
[С++] Напишите программу, которая будет выводить на экран вводимые символы до тех пор, пока не введен символ <*> C++
C++ Написать программу, которая будет выводить результат поиска с сайта
C++ Написать программу, которая будет определять цвет пикселя под курсором и выводить на экран этот цвет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slayster
5 / 5 / 1
Регистрация: 25.03.2014
Сообщений: 20
27.05.2014, 03:04     Написать программу, которая будет зеркально выводить введенную строку #2
в чем заключается вопрос?
karzuan
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 16
27.05.2014, 03:18  [ТС]     Написать программу, которая будет зеркально выводить введенную строку #3
Цитата Сообщение от slayster Посмотреть сообщение
в чем заключается вопрос?
программа не работает должным образом
slayster
5 / 5 / 1
Регистрация: 25.03.2014
Сообщений: 20
27.05.2014, 03:26     Написать программу, которая будет зеркально выводить введенную строку #4
что-то подобное?
C++
1
2
3
4
5
6
7
8
9
10
11
12
    char buf[100];
    int i = 0;
 
    gets(buf);
 
    while (buf[i])
        i++;
 
    for (int j = i - 1; j >= 0; j--)
        cout << buf[j];
 
    cout << endl;
karzuan
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 16
27.05.2014, 03:40  [ТС]     Написать программу, которая будет зеркально выводить введенную строку #5
Цитата Сообщение от slayster Посмотреть сообщение
что-то подобное?
именно, но мне интересно почему мой код не работает.

И кстати, почему в твоём выводится последний символ
C++
1
for (int j = i - 1; j >= 0; j--)
получается, что '\0' тоже учитывается? Тогда мне не понятно почему цикл счёта символов
C++
1
2
while (buf[i])
        i++;
останавливается на нуле после нуля
slayster
5 / 5 / 1
Регистрация: 25.03.2014
Сообщений: 20
27.05.2014, 03:49     Написать программу, которая будет зеркально выводить введенную строку #6
Цитата Сообщение от karzuan Посмотреть сообщение
И кстати, почему в твоём выводится последний символ Код
C++
1
for (int j = i - 1; j >= 0; j--)
в i количество символов + '\0', который стоит последним. int j = i-1, последний элемент пропускается.

Добавлено через 1 минуту
Цитата Сообщение от karzuan Посмотреть сообщение
получается, что '\0' тоже учитывается? Тогда мне не понятно почему цикл счёта символов
C++
1
2
while (buf[i])
i++;
'\0' не учитывается.
karzuan
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 16
27.05.2014, 03:58  [ТС]     Написать программу, которая будет зеркально выводить введенную строку #7
добавил выход из цикла вычисления длины строки и уменьшил величину последнего символа на один ( похоже действительно указывает на нулевой символ )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
 
{
int i, j, k=0;
const int n=100;
char arr[n], mir[n], ch;
 
cout<< "enter string: ";
 
gets(arr);
 
for(i=0; i< n ;i++) if(arr[i] ) k++;// length of string
else break;//out of cycle
cout<< endl << "mirror of your string is: ";
for( i=k-1, j=0; i>-1; i--, j++ ) // content of the last index of arr copy to the content of the first index mir, and so on till the arr[0]
         mir[j] = arr[i];
 
cout<< mir;
 
return 0;
    
}
непонятно, если счетчик длины массива считает трушные значения, почему символ конца строки тоже считается за тру, если он ноль.

Добавлено через 4 минуты
Цитата Сообщение от slayster Посмотреть сообщение
'\0' не учитывается.
в таком случае зачем вычитать единицу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2014, 04:08     Написать программу, которая будет зеркально выводить введенную строку
Еще ссылки по теме:

C++ Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию.З клавиатуры вводится имя компании, год основания
Написать программу, которая будет выводить значения АЧХ и ФЧХ по заданным параметрам C++
Создать программу которая будет выводить каждое 4 слово C++

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

Или воспользуйтесь поиском по форуму:
slayster
5 / 5 / 1
Регистрация: 25.03.2014
Сообщений: 20
27.05.2014, 04:08     Написать программу, которая будет зеркально выводить введенную строку #8
Цитата Сообщение от karzuan Посмотреть сообщение
в таком случае зачем вычитать единицу.
элементы массива начинаются с нуля... Вводим 1 символ, получаем в массив {'1', '\0'}; следовательно у нас 2 элемента с индексами 0 и 1
C++
1
for (int j = i - 1; j >= 0; j--)
получаем
C++
1
for (int j = 1 -1; j>=0; j--);
если не устраивает, можно исправить на while (buf[i]!='\0')
для наглядности
Yandex
Объявления
27.05.2014, 04:08     Написать программу, которая будет зеркально выводить введенную строку
Ответ Создать тему
Опции темы

Текущее время: 11:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru