1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Криптографическая задача.

Тема в разделе "Вопросы новичков и не только", создана пользователем aaaaaa, 4 июл 2011.

  1. aaaaaa

    aaaaaa Гость

    Репутация:
    0
    Способ шифрования текста состоит в замене каждого символа алфавита на соответствующий ему порядковый номер. Однозначные номера, чтобы избежать путаницы, записываются так: 01, 02, …, 09. Расшифровать текст сообщения, хранящийся в файле. Результат сохранить в другом файле, продублировав его на экране.

    В общем, решил создать из цифр фаила массив вида x={"08","05","12"......} с помощью обьединения строк и добавления в массив.

    Программа крашится после вывода тескта фаила. Помогите, пожалуйста, найти ошибку, или подскажите другой способ решения. Заранее благодарен. :)
    Код:
    #include <iostream>
    #include <fstream.h>
    #include <stdio.h>
    
    
    using namespace std;
    
    int main()
    {
    
    int j=0;
    int k=0;
    const int x=26;
    const int y=100;
    char* code[x]={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"};
    char* decode[x] ={"a","b","c","d","e","f","g","h","i","g","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
    FILE *file = fopen("file.txt","r");
    FILE *outfile =fopen ("output.txt", "wb");
    char str[y];
    char *enter;
    while(!feof(file))
    {
    enter=fgets (str,y,file);
    }
    puts(str);
    int h =strlen(str);
    
    char* results[y];
    for (int i=0; i<h; i+=2)
    {
    k=i+1;
    const char* enterc=(const char*)enter[i];
    const char* enterca=(const char*)enter[k];
    j++;
    strcpy(results[j],enterc);
    results[j]=strcat(results[j],enterca);
    }
    for (int i=0; i<h; i++)
    {
    for (int g=0; g<x; g++)
    {
    if(results[i]==code[j])
    {
    results[i]=decode[j];
    }
    }
    }
    cout << endl;
    fprintf (outfile,"%s",results);
    printf ("%s",results);
    fclose(file);
    return 0;
    }
     
  2. Ivka

    Ivka Гость

    Репутация:
    0
    1) FILE *file = fopen("file.txt","r");
    FILE *outfile =fopen ("output.txt", "wb");
    вы так уверены, что файлы открываются нормально?
    ИМХО нужна проверка...

    2) enter=fgets (str,y,file);
    вы считываете по строчке и присваеваете enter , не добавляете, а присваиваете(вконце enter будеть иметь указатель на последнюю строкуб но никак не всю информацию с файла)...
     
  3. aaaaaa

    aaaaaa Гость

    Репутация:
    0
    Разобрался в ошибках. Всем спасибо :)
     
Загрузка...

Поделиться этой страницей