0 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 4

Ошибка в кодах символов

11.12.2020, 13:05. Показов 997. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа писалась в среде программирования CodeBlocks. Код программы шифрует строку из слов след. способом: Суть данного способа шифрования заключается в том, что для шифрования текущего символа берется смещение по таблице ASCII на величину, равную сумме порядковых номеров по алфавиту двух символов исходного сообщения стоящих слева и справа от шифруемого. При шифровании первого и последнего символов, соответственно используются последний и первый символы исходного сообщения соответственно. Если полученный код выходит за пределы алфавита, то из него вычитается количество букв в алфавите. При вводе слова Andrey - первые два символа шифруются правильно, с 3 и 5 символом происходит что-то не понятное. Я заметил, что при шифровании символов d и e из моего введенного слова после данной строки кода newword[i] = a + b - 96 + c - 96; из newword[i] так же отнимается число 256. Возможно глупая ошибка из-за моей неопытности. Помоги пожалуйста новичку.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
#include <string.h>
 
#define s 100
#define x 20
 
int main()
{
    setlocale(0,"Russian");
    SetConsoleCP(1251); //задаем кодировку для вывода символов на экран
    SetConsoleOutputCP(1251); //задаем кодировку для ввода символов с клавиатуры в консоль
 
    int i, j, g, a, b, c, k = 0, kk = 0, d = 0, end, start;
    char word[s], oneword[x], newword[s];
    for(i = 0; i < s; i++){//заполнение массивов конкретными элементами
        word[i] = '-';// - чтобы можно было посчитать пробелы, то есть кол-во слов
        newword[i] = ' ';}
    printf("Enter the string for encryption in English: ");
    fgets(word, s, stdin);
    fflush( stdin );
    for(i = 0; i < s; i++){
        if (word[i] == ' ') k += 1;}//Находим количество пробелов
    k += 1; //Количество слов
 
    for(g = 0; g < k; g++){
        for (j = d; j < s; j++){
            if(word[j] != '\0' && word[j] != '\n' && word[j] != ' '){
                kk += 1;}
            else{
                end = j-1;
                kk += 1;
                break;}}
 
        ///ШИФРОВАНИЕ
        for(i = d; i <= end; i++){
 
            ///Шифрование первого символа
            if(i == d){
                a = word[i]; b = word[end]; c = word[i+1];
                if (a >= 65 && a <= 90){
                    if(b >= 97 && b <= 122) b = b - 32;
                    if(c >= 97 && c <= 122) c = c - 32;
                    newword[i] = a + b - 64 + c - 64;
                    if (newword[i] > 90) newword[i] -= 26;}
                else if (a >= 97 && a <= 122){
                    if(b >= 65 && b <= 90) b = b + 32;
                    if(c >= 65 && c <= 90) c = c + 32;
                    newword[i] = a + b - 96 + c - 96;
                    if (newword[i] > 122) newword[i] -= 26;}
                continue;}
 
            ///Шифрование последнего символа
            if(i == end){
                a = word[i]; b = word[i-1]; c = word[d];
                if (a >= 65 && a <= 90){
                    if(b >= 97 && b <= 122) b = b - 32;
                    if(c >= 97 && c <= 122) c = c - 32;
                    newword[i] = a + b - 64 + c - 64;
                    if (newword[i] > 90) newword[i] -= 26;}
                else if (a >= 97 && a <= 122){
                    if(b >= 65 && b <= 90) b = b + 32;
                    if(c >= 65 && c <= 90) c = c + 32;
                    newword[i] = a + b - 96 + c - 96;
                    if (newword[i] > 122) newword[i] -= 26;}
                break;}
 
            ///Шифрование символов между первой и конечной
            a = word[i]; b = word[i-1]; c = word[i+1];
            if (a >= 65 && a <= 90){
                if(b >= 97 && b <= 122) b = b - 32;
                if(c >= 97 && c <= 122) c = c - 32;
                newword[i] = a + b - 64 + c - 64;
                if (newword[i] > 90) newword[i] -= 26;}
            else if (a >= 97 && a <= 122){
                if(b >= 65 && b <= 90) b = b + 32;
                if(c >= 65 && c <= 90) c = c + 32;
                newword[i] = a + b - 96 + c - 96;
                if (newword[i] > 122) newword[i] -= 26;}}
        d = kk;
        if (g == k - 1) newword[i+1] = '\0';
        }
    puts("\nРезультат шифрования: \n");
    puts(newword);
    for(i = 0; i < s; i++){// вывод кодов зашифрованных символов
        if (newword[i] != '\0') printf("%d ", newword[i]);
        else break;}
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2020, 13:05
Ответы с готовыми решениями:

Ошибка в кодах символов
Программа писалась в среде программирования CodeBlocks. Код программы шифрует строку из слов след. способом: Суть данного способа...

Ошибка в кодах
program ada; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add...

Ошибка в идентичных кодах
Доброго времени суток, возможно вопрос покажется глупым, но я все ни как не могу понять в чем заключается ошибка. Есть один и тот же...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2020, 13:05
Помогаю со студенческими работами здесь

Ошибка ввода символов строки, при количестве символов кратных 8
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...

Ищу гипножабы в ascii кодах
Ищу гипножабы в ascii кодах минимум 20*20 символов Добавлено через 1 минуту долго вы, ладно завтра зайду...

Двоичные числа в инверсных кодах
Подскажите, пожалуйста, или литературу, к которой рассматриваются подобные примеры, или как делать!!

Bootloader в машинных кодах с комментариями
Доброго времени суток. Сегодня я хотел бы вам показать небольшой бутлоадер, который выводит на экран текст &quot;Wct one love&quot;. ...

Проблемы в html и css кодах
У меня такая проблема:при обновлении или открытии страницы появляются слова и моргает навигация сайта вот сами посмотрите:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru