Мне нужна помощь в программировании, у меня есть все, кроме одной части! Вот задание:Массивы в C и простые числа
Проблема 1: Операции с строками и защита данных: для повышения безопасности данных при передаче данных и информации осуществляется практическое кодирование с использованием динамического кодирования. Модификацией исходных символов может быть использование первых 8 простых членов [1, 2, 3, 5, 7, 11, 13, 17]: первый символ увеличен на 1; второй символ на 2, третий на 3, 8. восьмой символ на 17. Следующие 8 символов используют простые числа в обратном порядке 17..1 и уменьшают значения. Используйте общее сообщение не менее 64 символов [в количестве 8 символов] и повторите процесс изменения 1-17 для первых 8; изменение на 17 -1 для следующих 8 и т. д. Сделайте свое собственное сообщение. После того, как сообщение закодировано, необходимо также декодировать, чтобы восстановить исходное сообщение. Возможно, вы захотите изменить и нижний регистр, и верхний регистр.
Example: Original Message A B C D. …..
Normal ASCII 65 66 67 68 ….
Prime Numbers 1 2 3 5 ….
Enhanced ASCII 66 68 70 73 ….
Coded Message B D F I ……
У меня возникают проблемы распечатки простых чисел, не портя код после таких, как кодируется и декодируется ASCII коды и кодируются и декодируются коды. Это мой код: Если бы вы могли мне помочь, это было бы здорово! Я бы очень признателен, спасибо.
size_t x;
int i, c;
i = 1;
c = 0;
char text[65];
int s[8] = {1, 2, 3, 5, 7, 11, 13, 17};
printf("Enter a line of text: "); // prompts user to enter text
fgets(text, 65, stdin); // reads input from user
printf("\nOriginal Message: ");
for(x = 0; x < strlen(text); ++x) // for loop to print original message
{
printf("%c", text[x]);
} // end for
// ASCII Code
printf("\nASCII Code: ");
for(x = 0; x < strlen(text) - 1; ++x)
{
printf("%d ", text[x]);
}
// prime numbers
// my issue is here
printf("\n\nPrime Numbers: ");
for(x = 0; x <= 8 ; ++x)
{
if(c == 0)
{
if(i == 1)
{
printf("1 ");
++i;
}
else if(i == 2)
{
printf("2 ");
++i;
}
else if(i == 3)
{
printf("3 ");
++i;
}
else if(i == 4)
{
printf("5 ");
++i;
}
else if(i == 5)
{
printf("7 ");
++i;
}
else if(i == 6)
{
printf("11 ");
++i;
}
else if(i == 7)
{
printf("13 ");
++i;
}
else if(i == 8)
{
printf("17 ");
++c;
++x;
}
}
if(c == 1)
{
if(i == 8)
{
printf("17 ");
--i;
}
else if(i == 7)
{
printf("13 ");
--i;
}
else if(i == 6)
{
printf("11 ");
--i;
}
else if(i == 5)
{
printf("7 ");
--i;
}
else if(i == 4)
{
printf("5 ");
--i;
}
else if(i == 3)
{
printf("3 ");
--i;
}
else if(i == 2)
{
printf("2 ");
--i;
}
else if(i == 1)
{
printf("1 ");
--c;
}
} // end outer if
} // issue ends here
for(x = 0; x < strlen(text) - 1; ++x)
{
if(c == 0) // outer if statement increasing
{
if(i == 1) // inner if statement
{
text[x] = text[x] + 1;
++i;
}
else if (i == 2)
{
text[x] = text[x] + 2;
++i;
}
else if (i == 3)
{
text[x] = text[x] + 3;
++i;
}
else if(i == 4)
{
text[x] = text[x] + 5;
++i;
}
else if(i == 5)
{
text[x] = text[x] + 7;
++i;
}
else if(i == 6)
{
text[x] = text[x] + 11;
++i;
}
else if(i == 7)
{
text[x] = text[x] + 13;
++i;
}
else if(i == 8)
{
text[x] = text[x] + 17;
++c;
++x;
} // end if statement
} // end outer if statement
if(c == 1) // outer if statement decreasing
{
if(i == 8)
{
text[x] = text[x] + 17;
--i;
}
else if(i == 7)
{
text[x] = text[x] + 13;
--i;
}
else if(i == 6)
{
text[x] = text[x] + 11;
--i;
}
else if(i == 5)
{
text[x] = text[x] + 7;
--i;
}
else if(i == 4)
{
text[x] = text[x] + 5;
--i;
}
else if(i == 3)
{
text[x] = text[x] + 3;
--i;
}
else if(i == 2)
{
text[x] = text[x] + 2;
--i;
}
else if(i == 1)
{
text[x] = text[x] + 1;
--c;
}
} // end outer if
} // end for
printf("\n\nEncrypted Message: ");
for(x = 0; x <= strlen(text) - 1; ++x)
{
printf("%c", text[x]);
}
printf("\nEncrypted ASCII: ");
for(x = 0; x < strlen(text) - 1; x++)
{
printf("%d ", text[x]);
}
c = 0;
i = 1;
for(x = 0; x < strlen(text) - 1; ++x)
{
if(c == 0)
{
if(i == 1)
{
text[x] = text[x] - 1;
++i;
}
else if(i == 2)
{
text[x] = text[x] - 2;
++i;
}
else if(i == 3)
{
text[x] = text[x] - 3;
++i;
}
else if(i == 4)
{
text[x] = text[x] - 5;
++i;
}
else if(i == 5)
{
text[x] = text[x] - 7;
++i;
}
else if(i == 6)
{
text[x] = text[x] - 11;
++i;
}
else if(i == 7)
{
text[x] = text[x] - 13;
++i;
}
else if(i == 8)
{
text[x] = text[x] - 17;
++c;
++x;
} // end if statement
} // end outer if statement
if(c == 1)
{
if(i == 8)
{
text[x] = text[x] - 17;
--i;
}
else if(i == 7)
{
text[x] = text[x] - 13;
--i;
}
else if(i == 6)
{
text[x] = text[x] - 11;
--i;
}
else if(i == 5)
{
text[x] = text[x] - 7;
--i;
}
else if(i == 4)
{
text[x] = text[x] - 5;
--i;
}
else if(i == 3)
{
text[x] = text[x] - 3;
--i;
}
else if(i == 2)
{
text[x] = text[x] - 2;
--i;
}
else if(i == 1)
{
text[x] = text[x] - 1;
--c;
} // end inner if statements
} // end outer if statements
} // end for
printf("\n\nDecrypted Message: ");
for(x = 0; x < strlen(text); ++x)
{
printf("%c", text[x]);
}
printf("\nDecrypted ASCII: ");
for(x = 0; x < strlen(text) - 1; ++x)
{
printf("%d ", text[x]);
}
puts (""); } // end main
Можете ли вы описать, с выходными примерами, где ваша программа пойдет не так? Просто демпинг большой кучи кода здесь и просить, чтобы найти ошибку, немного грубо. –
Я отредактировал мое сообщение и указал, где проблема с использованием комментариев, в основном я пытаюсь распечатать простые числа, но я не могу, потому что это испортило остальную часть моего кода, и я хотел знать, есть ли альтернативный способ печати из простых чисел, чтобы он не испортил это? Например, если пользователь вводит «инжиниринг», он должен выходить как «1, 2, 3, 5, 7, 11, 13, 17, 17, 15, 13». Он увеличивается до 17 на каждые 8 символов, а затем уменьшается на следующий 8. Но я пытался обойти это, и он продолжает испортить мои коды дешифрования и шифрования, которые потом. – xiomy528
О!И я бы опубликовал фотографию вывода, но это не позволяет мне:/ – xiomy528