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

Шифр Цезаря. Исправить цикл или замените любым другим - C++

Восстановить пароль Регистрация
 
Dashie
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 5
07.05.2014, 23:28     Шифр Цезаря. Исправить цикл или замените любым другим #1
Здравствуйте, есть такой код, в этом цикле "while (a[i]!='\0')" есть ошибка, ну точнее есть "особый случай" по словам Преподавателя, когда эта программа будет кодировать не правильно, помогите исправить цикл или замените любым другим
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
// шифр.cpp: определяет точку входа для консольного приложения.
//
 
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <ctype.h>
using namespace std;
 
void shifr (char*,char*,int);
 
int main() {
    setlocale (LC_ALL, "rus");
    char str[255], sh_str[255]={0};
    for(;;){
        cout <<"введите строку \n";
        gets(str);
        //printf("%c\n",94);
        shifr(str, sh_str, 30);
        cout <<"зашифрованна :\n"<< sh_str <<endl;
        shifr(sh_str, str, -30);
        cout <<"разшифрованна :\n"<< str <<endl;
 
    }
    return 0;
 
}
 
void shifr (char*a,char*b, int sh) {
    int i=0;
    while (a[i]!='\0')
    {
        //if (isalnum (a[i]))
        if(*(a+i)+sh>126)
            b[i]=*(a+i)+sh-127+32;
        else if(*(a+i)+sh<32)
            b[i]=*(a+i)+sh+127-32;
        else
            b[i]=*(a+i)+sh;
        //else
            //b[i]=a[i];
        i++; 
    } 
    b[i]='\0';
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 23:28     Шифр Цезаря. Исправить цикл или замените любым другим
Посмотрите здесь:

Шифр Цезаря C++
C++ Шифр Цезаря
Шифр Цезаря C++
C++ шифр сдвига(цезаря)
C++ Шифр Цезаря
Шифр цезаря C++
C++ Шифр Цезаря C++
C++ Шифр Цезаря

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4316 / 3737 / 1260
Регистрация: 14.04.2014
Сообщений: 14,664
07.05.2014, 23:40     Шифр Цезаря. Исправить цикл или замените любым другим #2
Когда конец строки не отмечен, что ли?
Dashie
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 5
07.05.2014, 23:45  [ТС]     Шифр Цезаря. Исправить цикл или замените любым другим #3
Возможно, там нужно вообщем другой вариант этого цикла написать, чтобы работало норм.
Yandex
Объявления
07.05.2014, 23:45     Шифр Цезаря. Исправить цикл или замените любым другим
Ответ Создать тему
Опции темы

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