Тролько
Здравствуйте. Написати программу-шифровальщик. Нужен ввод рядка та ключевого слова. Программа должна реализировать алгоритм: к каждому значению символа рядка прибавлять значение соответствующего символа ключового слова. к следующему символу делать те же действия но с значением следующего символа ключового слова. пример (ключевое слово «abc»):ABC DEF GHK LMN OPEL АFM BGN CHO DKP
(строка разбита на 5 колонок...)
Код
# include <stdio.h>
# include <stdlib.h>
# include <strings.h>
char in[100], out[100], key[6]; // веделяется 'in' введеный масив и 'out' шифрованый
int main (void)
{
puts("Input string:"); // вывод "Введите рядок"
gets(in); //получить масив символов (клавиатура)
puts("Input keyword:"); // вывод "Введите кл. слово"
gets(key); //получить масив символов (клавиатура)
int i = 4;
int n = strlen(in); // длина масива символов (cтроки)
int m=strlen(key);
for (int pos = 0; pos < n; pos++)
{
while (i >= n)
{
i = i - n;
}
out[pos] = in[i];
i = i + 5;
}
puts(out);
return 0;
}
как написать, цыкл for , чтобы символы введеного кл. слова вставлялись поочередно в каждую колонку...( длина строки неизвестна...)
(строка разбита на 5 колонок...)
Код
# include <stdio.h>
# include <stdlib.h>
# include <strings.h>
char in[100], out[100], key[6]; // веделяется 'in' введеный масив и 'out' шифрованый
int main (void)
{
puts("Input string:"); // вывод "Введите рядок"
gets(in); //получить масив символов (клавиатура)
puts("Input keyword:"); // вывод "Введите кл. слово"
gets(key); //получить масив символов (клавиатура)
int i = 4;
int n = strlen(in); // длина масива символов (cтроки)
int m=strlen(key);
for (int pos = 0; pos < n; pos++)
{
while (i >= n)
{
i = i - n;
}
out[pos] = in[i];
i = i + 5;
}
puts(out);
return 0;
}
как написать, цыкл for , чтобы символы введеного кл. слова вставлялись поочередно в каждую колонку...( длина строки неизвестна...)
у тебя получится что-нить типа
while(in[i]!='\0')
{
in[i] = itoa(atoi(in[i])+atoi(key[j])); /*синтаксис itoa посмотри точнее - я не помню параметров */
if(j==/*длинна ключа*/)
j=0;
i++;
}
что-то в таком духе... если я правильно вопрос понял...
int m=strlen(key);
int i=0;
while(in[i]!='\0') {
out[i]=in[i]+key[i++%m];
}
% - деление по модулю. очень удобно. возвращает остаток от деления i на m.
зачем itoa atoi, нам нужно просто складывать чары.