Я новичок в классе программирования C, и наша задача для третьей главы нашего учебника состояла в том, чтобы создать программу кодирования / декодирования, которая берет четыре цифры из пользовательского ввода и переставляет их в зависимости от того, пользователь хочет, чтобы они были либо закодированы, либо декодированы. У меня также возникают проблемы с тем, чтобы программа выполняла как декодирование, так и кодирование в одном файле . Однако, когда я запускаю программу, всякий раз, когда я выбираю кодирование и ввод моих четырех цифр, программа не только дает мне массивное число, которое должно быть только четырьмя цифрами в качестве закодированного результата. Это также дает мне приглашение «нажать любую клавишу для продолжения», обозначающее конец программы, вместо того, чтобы начинать все сначала и возвращаться туда, где он просит пользователя либо декодировать, либо кодировать.
Вывод также прилагается.
Я пытался осмотреться и изменить некоторые переменные с int на double, а также проверить свою математику ... Я не уверен на 100%, почему шифрование и дешифрование не ограничены ничем, кроме четырех цифр.
Что касается запуска программы заново, я попытался использовать do-while l oop, но, похоже, оно не работает, поэтому я удалил его .. Я также попытался использовать другой оператор if с последующим использованием break, но он был помечен как ошибка.
Присвоение говорит, что «каждый di git должен быть зашифрован путем добавления 7 и взятия остатка после деления на 10; после шифрования каждого ди git, поменяйте местами первую и третью цифры, а затем поменяйте местами вторую и четвертую цифры. Расшифровка должна полностью изменить процесс. Программа должна выполнить кодирование и декодирование в одном файле.
Вот пример что мой инструктор написал для этого, вот как должен выглядеть вывод.
Enter a four digit number: 1234
Encoded Digits: 0189
Continue (1) Exit (0): 1
Encode (1) Decode (2): 2
Enter a four digit number: 0189
Decoded Digits: 1234
Continue (1) Exit (0): 0
Вот мой код:
///Compiler used: Microsoft Visual Studio
///Language: C
#include <string>
#pragma warning(disable: 4996)
#include <math.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int Encodechoice = 1;
int inputdigit1 = 0;
int Decodechoice = 2;
int UserChoice = 0;
int ContinueChoice = 0;
int UserDigit1 = 0;
int UserDigit2 = 0;
int UserDigit3 = 0;
int UserDigit4 = 0;
{
printf("(1) Encode, (2) Decode\n");
printf("Make your selection.\n");//Asks user to make selection
scanf_s("%d", &UserChoice);
if (UserChoice == 1)//begin encryption
{
UserDigit1 = 0;
UserDigit2 = 0;
UserDigit3 = 0;
UserDigit4 = 0;
printf("Encode: Enter FOUR integers.\n");
scanf_s("%d", &UserDigit1, &UserDigit2, &UserDigit3, &UserDigit4);
int EncodedIntegers1 = (UserDigit1 + 7) % 10;
int EncodedIntegers2 = (UserDigit2 + 7) % 10;
int EncodedIntegers3 = (UserDigit3 + 7) % 10;
int EncodedIntegers4 = (UserDigit4 + 7) % 10;
printf("Encoded result:\n");
printf("%d", "%d", "%d", "%d\n", EncodedIntegers3, &EncodedIntegers4, &EncodedIntegers1, &EncodedIntegers2); /// swap order of integers
}///end if
if (UserChoice == 2)///begin decryption
{
UserDigit1 = 0;
UserDigit2 = 0;
UserDigit3 = 0;
UserDigit4 = 0;
printf("Decode: Enter FOUR integers.\n");
scanf_s("%d", &UserDigit1, &UserDigit2, &UserDigit3, &UserDigit4);
int DecodedIntegers1 = (UserDigit1 - 7) * 10;
int DecodedIntegers2 = (UserDigit2 - 7) * 10;
int DecodedIntegers3 = (UserDigit3 - 7) * 10;
int DecodedIntegers4 = (UserDigit4 - 7) * 10;
printf("Decoded result:\n");
printf("%d", "%d", "%d", "%d\n", DecodedIntegers1, &DecodedIntegers2, &DecodedIntegers3, &DecodedIntegers4); /// keep order the same to decrypt
}///end if
system("pause");
return 0;
}
}
Вывод:
Make your selection.
1
Encode: Enter FOUR integers.
1234
Encoded result:
11893608 Continue? (1) Yes, (0) No
Make your selection.
1
Press any key to continue . . .```