02.03.2017, 13:04 | #11 (permalink) |
Member
Регистрация: 27.02.2017
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Хочу спросить ещё. Можно ли как-нибудь написать вам в личку при возникновении подобных проблем, просто большинство того что говорят в университете непонятно, вот и приходится "самому разбираться". |
02.03.2017, 13:04 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Содержимое этих обсуждений может помочь вам решить проблему Нужна информация про алгоритмы шифрования Алгоритмы шифрования Нужна программа для шифрования IP! |
02.03.2017, 13:23 | #12 (permalink) |
Member
Регистрация: 27.02.2017
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Сообщение от noo123 Посмотреть сообщение Пожалуйста, вы не могли бы объяснить, для чего мы i умножаем на два, а во втором случае ещё и добавляем единицу, никак не могу понять=( Да просто чтобы они выводились попарно и в столбик: в каждой строке номер строки и столбца очередного символа. Вам это не обязательно, можно, как я написал выше, просто гнать их в одну строку. Это уж я так, "шоб красивше". То есть, я могу не умножать i на 2? for (i = 0; i < 6; i++) cout << Sif[2*i] << Sif[2*i+1] << endl; Просто, если я изменяю на : cout << Sif[i] << Sif[i+1] << endl; то выводятся совсем другие числа, так что это вряд ли для красоты))) или я ошибаюсь? |
02.03.2017, 17:58 | #14 (permalink) |
Member
Регистрация: 27.02.2017
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Если оставляю так, выводится чушь=)
for (k = 0; k < 50; k++) for (i = 0; i < 6; i++) for (j = 0; j < 6; j++) if (sym[k] == M[i][j]) {Sif[KS] = i; Sif[KS+1] = j; KS = KS + 2; } for (i = 0; i < 6; i++) cout << "Координаты слова - " << Sif << endl; ; _getch(); return 0; } ******** Квадрат Полибия (3 метод)! ********* АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ*** АБВГДЕ ЁЖЗИЙК ЛМНОПР СТУФХЦ ЧШЩЪЫЬ ЭЮЯ*** ЗАЩИТА Координаты слова - 0044F904 Координаты слова - 0044F904 Координаты слова - 0044F904 Координаты слова - 0044F904 Координаты слова - 0044F904 Координаты слова - 0044F904 |
02.03.2017, 19:33 | #15 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Дайте листинг целиком.
Пока не вижу, в чем ошибка. Единственное - цикл for (i = 0; i < 6; i++) перед строкой cout << ... не нужен. Уберите. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
03.03.2017, 09:33 | #16 (permalink) |
Member
Регистрация: 27.02.2017
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
#include <iostream>
#include <cmath> #include <conio.h> #include <string> using namespace std; int main() { setlocale(LC_ALL, "Russian"); cout << "******** Квадрат Полибия (3 метод)! *********" << endl; char M[6][6], K = 0; int i, j, k=0, KS = 0; int Sif[100]; char S[37] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ***"; char sym[50] = "ЗАЩИТА"; for (i = 0; i < 6; i++) for (j = 0; j < 6; j++) { M[i][j] = S[K]; K++; } cout << endl; cout << S << endl; cout << endl; for (i = 0; i < 6; i++) { cout << endl; for (j = 0; j < 6; j++) cout << M[i][j]; } cout << endl; cout << endl; cout << sym << endl; for (k = 0; k < 50; k++) for (i = 0; i < 6; i++) for (j = 0; j < 6; j++) if (sym[k] == M[i][j]) {Sif[KS] = i; Sif[KS+1] = j; KS = KS + 2; } cout << "Координаты слова - " << Sif << endl; _getch(); return 0; } |
03.03.2017, 09:34 | #17 (permalink) | |
Member
Регистрация: 27.02.2017
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ*** АБВГДЕ ЁЖЗИЙК ЛМНОПР СТУФХЦ ЧШЩЪЫЬ ЭЮЯ*** ЗАЩИТА Координаты слова - 003AF540 |
|
03.03.2017, 09:54 | #18 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Прямо даже и не знаю... Я уже говорил, что СИ практически не владею, к сожалению.
На первый взгляд всё правильно. Ошибок не вижу. В порядке бреда: 1. Подумал, вдруг транслятор не обнуляет переменные по умолчанию? Попробуйте перед тройным циклом поставить KS = 0; 2. Вернитесь к латинице. Вроде с ней программа работала? Если так, значит какие-то задвиги с кодировками кириллицы. Хотя нет, первый пункт отменяется: увидел в начале программы это обнуление KS. |
03.03.2017, 14:56 | #19 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну что я могу сказать?
Еще раз переписал Вашу программу на Паскаль - буквально построчно. Чтобы сохранить СИ-шную нумерацию от 0, вместо строк (в Паскале их элементы нумеруются с 1) использовал символьные массивы. Еще ограничил длины массивов S, Sym и Sif требуемыми числами, т.е. "без запаса". Таким образом, S идёт от 0 до 35, Sym от 0 до 5 и Sif от 0 до 11. Пожалуй, и вся разница. Код:
Const S:Array[0..35] of Char=('А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С', 'Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я','*','*','*','*'); Sym:Array[0..5] of Char=('З','А','Щ','И','Т','А'); Var M:Array[0..5,0..5] of Char; Sif:Array[0..11] of Integer; i,j,k,KS:Integer; Begin Writeln('******** Квадрат Полибия (3 метод)! *********'); k:=0; KS:=0; for i:=0 to 5 do for j:=0 to 5 do begin M[i][j]:=S[K]; k:=k+1; end; Writeln; for k:=0 to 35 do Write(S[k]); Writeln; for i:=0 to 5 do begin for j:=0 to 5 do Write(M[i][j]+' '); Writeln; end; Writeln; for k:=0 to 5 do Write(Sym[k]); Writeln; for k:=0 to 5 do for i:=0 to 5 do for j:=0 to 5 do if Sym[k]=M[i][j] then begin Sif[KS]:=i; Sif[KS+1]:=j; KS:=KS+2; end; Write('Координаты слова - '); for KS:=0 to 11 do write(Sif[KS]); Readln End. Как видите, всё правильно. Даже и не ведаю - и чего она у Вас фордыбачит? Возможно, какие-то тонкости языка СИ, которых я попросту не знаю. |
03.03.2017, 15:59 | #20 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну так и есть! Изучите правила употребления оператора cout. Как я понял, при выводе массивов так, как это сделано у Вас:
Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|