Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 2
1

Шифрование суммированием соседних байтов

02.12.2013, 22:29. Показов 773. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вводится последовательность не более 6 строк длиной не более 53 символов.Допустимые символы в строке - латинские буквы, цифры, пробел и знаки препинания.Окончание входного потока - ввод строки, начинающейся символом ":".Алгоритм шифрования ( формирования очередного байта выходной строки):
b[i] = a[i]+a[i+1]
b[k]= a[0]+a[k]
a[0] - знач-е начального байта входной строки
a[k] - знач-е последнего байта
b[0],b[k] - для выходной строки
Пример выходной строки:
Введено n1 строк, всего n2 символов
мин длина строки n3
макс длина строки n4
получен шифровальный текстпосл-ть обработанных строк)



Может кто-нибудь помочь пожалуйста?С Си не особо знаком...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2013, 22:29
Ответы с готовыми решениями:

Выполнить шифрование/дешифрование строки символов, используя операцию циклического сдвига байтов
Выполнить шифрование/де шифрование строчки(рядка) символов, используя операцию циклического здвига...

Выполнить чтение всех байтов с файла с помощью FileInputStream в массив байтов
Выполнить чтение всех байтов с файла с помощью FileInputStream в массив байтов. Создать строку...

Сканирование байтов в памяти, и получение начального адреса байтов
Привет форумчане! У меня вопрос, как просканировать память у процесса так, чтобы получить адрес...

Если увеличить объём кластера на флешке с 4048 байтов до 8192 байтов то она будет работать быстрей?
Как думаете если увеличить объём кластера на флешке с 4048 байтов до 8192 байтов то на будет...

3
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
03.12.2013, 01:31 2
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
#define BUF_SZ 53
#define N_ROW 6
 
// плучаем строку
void get_row(char *out, int *sz) {
    char buf[BUF_SZ];
    fgets(buf, BUF_SZ, stdin);
    *sz = strlen(buf);
    // удаляем перевод строки
    if (buf[*sz - 1] == '\n') {
        buf[*sz - 1] = '\0';
        (*sz)--;
    }
    strcpy(out, buf);
}
// кодируем
void get_coded_raw(char *in, char *out, int sz) {
    int sym = 0;
    if (sz == 1)
        strcpy(out, in);
    else {
        for (sym = 0; sym < sz - 1; sym++)
            out[sym] = in[sym] + in[sym + 1];
        out[sz - 1] = in[0] + in[sz - 1];
        out[sz] = '\0';
    }
 
}
 
int main() {
    char in[N_ROW][BUF_SZ], out[N_ROW][BUF_SZ];
    int row = 0;
    int min_strlen = BUF_SZ, max_strlen = 0, sum_sz = 0; /* суммарное число символов*/
    puts("Input text. Row with only : for exit");
    while (row < N_ROW) {
        int sz; /* длина строки*/
        get_row(in[row], &sz);
        if (in[row][0] == ':')
            break;
        if (min_strlen > sz)
            min_strlen = sz;
        if (max_strlen < sz)
            max_strlen = sz;
        sum_sz += sz;
        get_coded_raw(in[row], out[row], sz);
        row++;
    }
    puts("");
    printf(
            "Введено %d строк, всего %d символов. Мин длина строки %d, макс длина строки %d. Получен шифрованный текст:\n",
            row, sum_sz, min_strlen, max_strlen);
    int new_rows = row;
    for (row = 0; row < new_rows; ++row) {
        printf(out[row]);
    }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 2
23.12.2013, 00:28  [ТС] 3
Когда преобразовываю из CPP в C, ему не нравится 56,64 и 67 строчка.Чтобы это могло значить?
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
24.12.2013, 13:36 4
как бы 64 и 67 строк я тут не вижу, если ругается на int new_rows = row;, вынесите это объявление в начало main(). там где объявлены остальные функции
0
24.12.2013, 13:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2013, 13:36
Помогаю со студенческими работами здесь

Найти число пар одинаковых соседних (соседних только в одной строке) элементов в двумерном массиве
Дан двумерный массив в файле ‘array.txt’. Найти число пар одинаковых соседних (соседних только в...

Заменить каждый элемент массива суммой соседних индексов. Если соседних элементов нет, то число оставить без изменения.
1)Дан одномерный массив, который содержит не более 50 целых чисел. Заменить каждый элемент массива...

Вывести два соседних слова, сумма длин которых меньше суммы длин любых других пар соседних слов.
Необходимо вывести два соседних слова, сумма длин которых меньше суммы длин любых других пар...

Запрос с суммированием
Есть таблица, в ней пять столбцов: дата, номер приходного документа, цена, сумма и количество...

Запрос с суммированием
Доброго времени суток! имеется БД допустим такой структуры: фамилия|марка_машины| расход |...

Запрос с суммированием
Всем доброго времени суток. Для SQL Compact нет своего раздела, поэтому обращаюсь в раздел...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru