![]() |
![]() |
Правила Форума редакция от 22.06.2020 |
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
Опции темы | Опции просмотра |
![]() |
![]() |
![]() |
Неактивный пользователь
Регистрация: 17.01.2008
Адрес: Dnepr
Сообщений: 6
Репутация: 0
|
![]() наисать програму для шифрования(дешшифрования) текста методом Виженера нужно перевести символи алфавита в их порядковые номера по алфавиту я зделал так z[i][j]=z[i][j]-'a'+1; используя функцию fun(a+b) закодировать и перевести обратно символи алфавита
z[i][j]=z[i][j]+'a'-1; - но так что не выходит, и записать в другой файлю Подскажите может можно написать программу проще? #include <stdio.h> #include <conio.h> int fun (char a, char b) { return (a+b);} void main() {clrscr(); char a[10], w[200], i, j; printf ("vvelite klu4 nsimbol\n"); scanf ("%10c",&a); for (i=0; i<10; i++) { a[i]=a[i]-'a'+1; printf("%d",a[i]); } FILE *text; text=fopen("c:\\text.txt","r"); char z[80][6]; do { fscanf(text,"%c",&z[i][j]); { z[i][j]=z[i][j]-'a'+1; printf("%d",z[i][j]); for (a[i]=0; a[i]>10; i++) w[i]=fun(z[i][j],a[i]); w[i]=w[i]+'a'-1; } } while(!feof(text)); fclose(text); printf("%c",w); } |
![]() |
![]() ![]() |
Реклама: | купить hp omen 16 | поставить пломбу на зуб стоимость | решетка приточная пму 600x400 арктика цена | круиз на теплоходе из москвы 2025 август по волге | купить ювелирную эмаль холодную |
![]() |
![]() |
Постоялец
![]() ![]() ![]() ![]() ![]() Пол: ![]() Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
![]() У Вас в этом коде много ошибок выполнения,
одна из грубейших: Код:
fscanf(text,"%c",&z[i][j]); Есть еще несколько. Не поленитесь, запустите программу в отладочном режиме и пройдите ее всю по шагам. Уверен, что обнаружите все ошибки.
__________________
Сергей Сергеевич |
![]() |
![]() ![]() |
![]() |
![]() |
Неактивный пользователь
Регистрация: 17.01.2008
Адрес: Dnepr
Сообщений: 6
Репутация: 0
|
![]() У Вас в этом коде много ошибок выполнения,
одна из грубейших: fscanf(text,"%c",&z[i][j]) Чему здесь равно j? Уважаемый zss! Я не давно изучаю СИ эта функция сканирует адрес символа из файла текст чтоб записать его в массив Z[80][6] j означае переход на строку почему ета запись является грубейшей ошибко мне не понятно ежели мона разясни. Возможно я указал переменые i и j как char? Укажи на другие ошибки. |
![]() |
![]() ![]() |
![]() |
![]() |
Постоялец
![]() ![]() ![]() ![]() ![]() Пол: ![]() Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
![]() Если Вы используете переменную, то ей сначала надо присвоить значение.
Поэтому fscanf(text,"%c",&z[i][j]) не будет знать в какое место двумерного массива надо поместить считываемое значение символа. Если Вы предполагали прочитать слово длиной не более 6 символов, то эта команда должна выглядеть так: i=0; do{ fscanf(text,"%s",z[i]); i++; .... Еще одна ошибка: scanf ("%10c",&a); прочитает один символ, а не 10. Еще раз советую пользоваться отладчиком. Вы эти ошибки найдете самостоятельно и намного быстрее, чем с использованием сторонних советчиков.
__________________
Сергей Сергеевич Последний раз редактировалось zss; 25.03.2008 в 16:03.. |
![]() |
![]() ![]() |
![]() |
![]() |
Неактивный пользователь
Регистрация: 17.01.2008
Адрес: Dnepr
Сообщений: 6
Репутация: 0
|
![]() Еще одна ошибка:
scanf ("%10c",&a); прочитает один символ, а не 10. На сколько я правильно понял scanf ("%10c",&a); считывает толькопервые 10 символов из вводимой строки остальные игнорируются. Как использовать отладчиком если я использую TC. |
![]() |
![]() ![]() |
![]() |
![]() |
Постоялец
![]() ![]() ![]() ![]() ![]() Пол: ![]() Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
![]() Извиняюсь, действительно читается 10 символов, хотя это и не оговаривалось, так что можете писать:
fscanf(text,"%10с",z[i]); Однако у Вас выделено место только под 6 символов: char z[80][6]; 80 строк по 6 символов (второй индекс меняется быстрее). ТС очень устарелый продукт. Советую поставить Visual C++ версия 6.0. Можно, конечно, и Visual Studio.net 2005 (но 6.0 проще в использовании).
__________________
Сергей Сергеевич |
![]() |
![]() ![]() |
Сказали спасибо: |
![]() |
![]() |
|||||||||||||||||||||||
Неактивный пользователь
Регистрация: 17.01.2008
Адрес: Dnepr
Сообщений: 6
Репутация: 0
|
![]()
Имеется ввиду что z[i][j] ето двумерный массив 80х6, но сейчас сделал без использования массива, что упростило программму. Есть еще вопрос как в СИ подсчитать такое: (19+20)mod26 ето математическое выражение как его реализовать в СИ? |
|||||||||||||||||||||||
![]() |
![]() ![]() |
![]() |
![]() |
|||||||||||||||||||||||
![]()
так: Код:
int a = (19 + 20) % 26;
__________________
THE TRUTH IS OUT THERE |
||||||||||||||||||||||||
![]() |
![]() ![]() |
Сказали спасибо: |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна помощь! | GgreenpowerP | Настройка интернета | 2 | 29.01.2009 08:40 |
Нужна помощь. | oleg_bass | Скорая помощь | 2 | 06.01.2009 11:14 |
Нужна помощь | aksakal7 | Архив | 9 | 25.05.2007 23:21 |
Нужна помощь в ответе на вопрос, причем нужна сегодня(15 марта). | prosmith | Архив | 1 | 15.03.2007 20:57 |
Нужна помощь. | asu | Вeб Дизайн | 3 | 26.12.2005 19:58 |
|
|