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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2013, 12:43   #1
V_I_P
Пользователь
 
Регистрация: 13.10.2013
Сообщений: 19
По умолчанию Шифрование и дешифрование

Код:
#include "stdafx.h"
#include <cstdio>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(0,"Rus");
	int i=0,j,letter=65,length_secret=0;
	char Arr[8][4];
	char secret[28];
	char text[256];
	char cipher[256];
	char encoded[256];
	printf_s("Введите секретное слово: ");
	gets(secret);
	while(secret[i])
	{
		if((secret[i]>122||secret[i]<65)||(secret[i]>90&&secret[i]<97))
		{
			printf_s("Введен ошибочный символ! \n");
			system("pause");
			exit(1);
		}
		i++;
	}
	while(secret[length_secret])
	{
		if(secret[length_secret]>90)
		{
			secret[length_secret]=secret[length_secret]-32;
		}
		length_secret++;
	}
	i=0;
	j=1;
	while(i!=length_secret-1)
	{
	  {
	   if(secret[i]==secret[j])
	   {
		   printf_s("Символы не должны повторяться!\n");
		   system("pause");
		   exit(1);
	   }
	   else
	   {
	     j++;
	   }
	  }
	  if(j=length_secret-1)
	  {
		  i++;
		  j=i+1;
	  }
	}
	printf_s("Введите текст,который необходимо зашифровать: ");
	gets(text);
	i=0;
	while(text[i])
	{
		
		  if((text[i]>122||text[i]>32&&text[i]<46||text[i]>46&&text[i]<65||text[i]<32)||(text[i]>90&&text[i]<97))
		  {
			  printf_s("Введен ошибочный символ! \n");
			  system("pause");
			  exit(1);
		  }
		  i++;
	}
	int length_text=0;
	while(text[length_text])
	{
		if(text[length_text]>90)
		{
			text[length_text]=text[length_text]-32;
		}
		length_text++;
	}
	i=0;j=0;
	int itSec=0,startI=0,startJ=0;
	while((length_secret)-itSec!=0)
	{
		 if(j>3)
		 {
			 i++;
			 startI++;
			 startJ=0;
			 j=0;
		 }
		 Arr[i][j]=secret[itSec];
		 j++;
		 startJ++;
		 itSec++;
	}
	//Заполнение массива
	int it=0;
	for(i=startI;i<=6;i++)
	{
		for(j=startJ;j<=3;j++)
		{
		  for(int count=0;count<=(length_secret-1);count++)
		  {
			  if(secret[count]==letter)
			  {
				  letter++;
				  count-=count;
				  continue;
			  }
		  }
	
			if(secret[it]!=letter)
			{
				if(letter>90)
				{
					letter=32;
				}
				if(letter==33)
				{
					letter=46;
				}
		      Arr[i][j]=letter;
		      letter++;
			}
			else
			{
				letter++;
				j-=1;
				it++;
			}
		}
		startJ=0;
	}
	//Шифрование
	it=0;int cipher_length=0;
	i=0;j=0;
	for(i=0;i<=6;i++)
	{
		for(j=0;j<=3;j++)
		{
			if(Arr[i][j]==text[it])
			{
				if(i!=0)
				{
                 cipher[it]=Arr[i-1][j];
				}
				else
				{
					cipher[it]=Arr[6][j];
				}
				it++;
				cipher_length=it;
				j=3;
				i=-1;
			}
		}
	}
	//
	//Дешифрование
	it=0;
	i=0;j=0;
	for(i=0;i<=6;i++)
	{
		for(j=0;j<=3;j++)
		{
			if(cipher[it]==Arr[i][j])
			{
				if(i!=6)
				{
                 encoded[it]=Arr[i+1][j];
				}
				else
				{
					encoded[it]=Arr[0][j];
				}
				it++;
				j=3;
				i=-1;
			}
		}
	}
	//
	for(i=0;i<=6;i++)
	{
		for(j=0;j<=3;j++)
		{
			printf_s("%c",Arr[i][j]);
		}
		printf_s("\n");
	}
	printf_s("Зашифрованое слово: ");
	for(i=0;i<cipher_length;i++)
	{
		printf_s("%c",cipher[i]);
	}
	printf_s("\n");
	printf_s("Дешифрованое слово: ");
	for(i=0;i<cipher_length;i++)
	{
		printf_s("%c",encoded[i]);
	}
	printf_s("\n");
	system("pause");
	return 0;
}



Вот код программы. У меня выводит вот эту ошибку:
Ошибка 1 error C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

Помогите исправить мне ее.

Последний раз редактировалось Stilet; 04.11.2013 в 13:55.
V_I_P вне форума Ответить с цитированием
Старый 04.11.2013, 21:32   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Замени
Код:
	gets(secret);
на
Код:
	gets_s(secret, 28);
, и
Код:
gets(text);
на
Код:
	gets_s(text, 256);
.

Ну или просто сними флажок в настройках проекта с Treat Warnings as Errors.
Son Of Pain вне форума Ответить с цитированием
Старый 05.11.2013, 02:06   #3
V_I_P
Пользователь
 
Регистрация: 13.10.2013
Сообщений: 19
По умолчанию

спасибо большое
V_I_P вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование и дешифрование KOT125 Помощь студентам 1 29.03.2013 14:44
шифрование и дешифрование Маша1993 Помощь студентам 0 25.09.2012 15:16
Шифрование и дешифрование shananina-katya Фриланс 2 28.03.2012 21:30
шифрование и дешифрование Dima170792 Помощь студентам 6 21.04.2011 22:31
Шифрование и дешифрование foxes Помощь студентам 7 28.03.2010 17:43