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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2015, 21:41   #1
Lampampam
 
Регистрация: 23.11.2015
Сообщений: 4
Вопрос не понимаю ошибку в коде (Шифровка и дешифровка)

Добрый вечер.

Пытаюсь выполнить задачу. В интернете много однотипных, но хочется разобраться со своим кодом. Запись в файл и вывод осуществляется,
а кодирование и расшифровка не получается где и в чем ошибка, подскажите пожалуйста:
Задание
Составить программу, реализующую функции указанного ниже меню. Выполнить функциональное разбиение программного кода.
Меню программы:
1 – Сформировать с клавиатуры строку и записать в файл (строка может содержать пробелы);
2 – Считать строку из файла и распечатать;
3 – Зашифровать строку и записать в файл;
4 – Расшифровать строку и записать в файл;
5 – Выход.
------------- Каждая буква меняется на следующую по часовой стрелке в алфавите букву, буква "я" остается без изменения.


По действиям выделила для себя решение следующим образом:
1) является ли символ буквой , если да то меняется
-если нет , то символ остается без изменений.
2 является ли буквой Я(я), если да то она остается.

и дешифровку кто-нибудь может по действиям расписать.... это надо от нашего полученного массива с символами отнять 1 . правильно ли яэто реализовала?



Код:
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <process.h>
#include <windows.h>
#include <ctype.h>

void vvod(); //ввод данных
void vivod (); //вывод на экран содержимого файла
void shifr ();
void deshifr();

void main ()
{	setlocale(LC_CTYPE, "Russian");
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	system ("cls");
	fflush(stdin);
	char *C=new char[100];
	int menu=0;
while (1)
{
	menu=0;
	system("cls");
	puts("Выберите пункт меню:");
	puts("1-Записать строку в файл");
	puts("2-Считать строку из файла и распечатать");
	puts("3-Зашифровать строку и записать в файл");
	puts("4-Расшифровать строку и записать в файл");
	puts("5-Выход");
	scanf_s("%d", &menu);
switch (menu)
{
	case 1: vvod(); break;
	case 2: vivod(); break;
	case 3: shifr(); break;
	case 4: deshifr(); break;
	case 5: exit(0);
default: system("cls");
fflush(stdin); 
puts("Неверный выбор, нажмите любую клавишу для возврата в меню"); 
_getch();
}}
_getch();}


void vvod()
{
	system("cls");
	FILE *f1;
	system("cls");
	char *C1= new char [100];
	f1=fopen("f1.txt","w");
	if ((C1!=0)&&(f1!=0))
{
	printf ("Введите символы:\n");
	fflush (stdin);
	fgets(C1,100,stdin);
	fputs (C1,f1);
	printf ("Записано в файл \n");
	fclose (f1);
	delete [] C1;
	_getch();
}
}
	
	void vivod () 
{FILE *f1;
system("cls");
fflush(stdin);
char *C1= new char [100];
f1=fopen("f1.txt","r");
if ((C1!=0)&&(f1!=0))
{printf ("Содержимое текстового файла:\n");
fgets (C1,100,f1);
puts(C1);
fclose(f1);
delete [] C1;
_getch();}}

	void shifr ()
{   FILE *f1;
	system("cls");
	fflush(stdin); 
	char *str1=new char [100];
	char *strn=new char[100];
	f1=fopen("f1.txt","r+");
if((str1!=0)&&(f1=0))
	{fgets(str1,100,f1);	
		int r=0;
for (int i=0;i<strlen(str1);i++)
{if (iswalpha(*(str1+i)))  
{*(strn+r)=*(str1+i);
r++;}
else *(strn+r)=*(str1+i);}
for (int i=0;i<strlen(str1);i++)
{if (*(str1+i)=='я' || *(str1+i) =='Я')  *(strn+r)=*(str1+i);}

*(strn+r)='\0';
printf_s("зашифрованная строка:\n");
puts(strn);
fputs(strn,f1);
fclose(f1);
delete  str1;
delete strn;}
_getch();}



void deshifr ()
{   FILE *f1;
	system("cls");
	fflush(stdin); 
	char *str2=new char [100];
	char *strn1=new char[100];
	int i=0;	
	int r=0;
	f1=fopen("f1.txt","r+");
	if((str2!=0)&&(f1=0))
{fgets(str2,100,f1);
	
for (i=0;i<strlen(str2);i++)
{if (iswalpha(*(str2+i)))  
{*(strn1+r)=*(str2-i);
r--;}
else *(strn1+r)=*(str2+i);}
for (i=0;i<strlen(str2);i++)
{if (*(str2+i)=='я' || *(str2+i) =='Я')  *(strn1+r)=*(str2+i);}}

*(strn1-r)='\0';
printf_s("зашифрованная строка:\n");
puts(strn1);
fputs(strn1,f1);
fclose(f1);
delete [] str2;
delete [] strn1;}
_getch();}

Последний раз редактировалось Stilet; 12.12.2015 в 21:44.
Lampampam вне форума Ответить с цитированием
Старый 16.12.2015, 00:24   #2
prostospirit@gmail
Новичок
Джуниор
 
Регистрация: 16.12.2015
Сообщений: 1
По умолчанию

У вас получилось уже или нет?)
prostospirit@gmail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новичок в С++, шифровка/дешифровка файлов Merf1n Visual C++ 5 11.12.2013 00:06
СИ шифровка и дешифровка Габриэлла Помощь студентам 1 29.11.2011 22:35
Шифровка и Дешифровка Claster Помощь студентам 4 27.03.2011 12:30
шифровка и дешифровка текста паролем s2dentishe Помощь студентам 3 21.12.2009 09:41