Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2012, 15:39   #1
Slavik3
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 18
По умолчанию убрать мусор после вывода правельного результата

В программе нужно выполнить перестановку символов заданного слова со здвигом. Программа выводит результат, 10 букв М, изначальное слово. В чем ошибка?
#include "stdafx.h"
#include "iostream"
using namespace std;

int main()
{
setlocale(LC_CTYPE,"Russian");
int zdvig=3;//здвиг
int razm=26;//количество букв алфавита
char alf[]="abcdefghijklmnopqrstuvwxyz";
char slovo[] = "slovo";//слово которое нужно зашифровать
char new_slovo[5];
for (int i=0; i<5; i++)
{
for(int j=0;j<razm;j++)
{
if(slovo[i]==alf[j])
{
new_slovo[i]=alf[j+zdvig];
}
}
}
cout<<"зашифрованое слово = "<<new_slovo<<endl; //должно выводить только voryr
system("pause");
}
Slavik3 вне форума Ответить с цитированием
Старый 30.09.2012, 16:16   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Зарезервируйте под новое слово на один символ больше, чем букв в нем будет. Последним должен идти символ \0, означающий конец строки. А вообще лучше все константы определить с ключевым словом const, под слово выделить, скажем, 128 символов, чтоб можно было вводить слова произвольной длины (едва ли нормальное слово будет длиннее 127 символов). Плюс пишите так:
Код:
#include <iostream>
Ну и код на форуме нужно заключать в тег (только большими буквами).
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.09.2012, 16:26   #3
Slavik3
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 18
По умолчанию

не понял/не помогло
Slavik3 вне форума Ответить с цитированием
Старый 30.09.2012, 16:41   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Если сильно не изменять вашу программу, то должно быть примерно так:
Код:
#include "stdafx.h"
#include <iostream>

using namespace std; 

int main() 
{ 
const int AlfSz = 26;//количество букв алфавита 
char alf[AlfSz]="abcdefghijklmnopqrstuvwxyz";
setlocale(LC_CTYPE,"Russian");
int shift = 3;//здвиг
char slovo[128] = "slovo";//слово которое нужно зашифровать
int len = strlen(slovo);
char new_slovo[128]; 
for (int i=0; i<len; i++)
 {
 for(int j=0;j<AlfSz;j++)
  {
  if(slovo[i]==alf[j])
   { 
   int k = j + shift;
   if (k > AlfSz)
    k -= AlfSz;
   new_slovo[i]=alf[k];
   }
  }
 }
new_slovo[len + 1] = '\0';
cout<<"зашифрованое слово = "<<new_slovo<<endl; //должно выводить только voryr
system("pause");
}
Вообще советую посмотреть мою реализацию аналогичной задачи: Код Цезаря
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.09.2012, 16:54   #5
Slavik3
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 18
По умолчанию

Огромное спасибо.
Только здесь
Код:
new_slovo[len + 1] = '\0';
+1 лишнее, выводит одну M, я ее убрал и вывелось правильно.
P.S. Код цезаря и пытаюсь реализовать )
Slavik3 вне форума Ответить с цитированием
Старый 30.09.2012, 18:12   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Точно, +1 лишнее, это я опечатался.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод результата после запроса Hamsi БД в Delphi 1 07.12.2010 17:00
Убрать мусор из сводной таблицы. agregator Microsoft Office Excel 12 25.01.2010 21:44
Как убрать мусор до строки Alyonka_v Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 13.09.2009 13:28
Помогите: решить проблему с ошибкой вывода результата. InCun PHP 3 12.04.2009 15:24