Форум программистов, компьютерный форум CyberForum.ru

Маршрутная перестановка. Замена switch-case - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из двоичного файла выбрать простые числа, расположенные после максимального значения в файле\С++ для начинающи http://www.cyberforum.ru/cpp-beginners/thread1179941.html
Создать двоичный файл, куда записать n целых чисел. Из файла создать массив, элементы которого являются простыми числами и расположены после максимального значения файла.
C++ Ряд Тейлора. В чем ошибка? Составить алгоритм и написать программу, которая вычисляет и выводит на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xнач до xкон с шагом dx с точностью . Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда. ... http://www.cyberforum.ru/cpp-beginners/thread1179935.html
Определить количество элементов после первого нуля C++
В массиве А (n) (n <= 9) есть хотя бы один нулевой элемент. Определить количество элементов после первого нуля.
C++ Граф. Нужно доработать программу, не понимаю в чем ошибка
Дан граф из N вершин, заданный списком смежности. Необходимо выяснить, соседствуют ли две заданные вершины u и v с третьей (отличной от них обеих). Программа компилируется, но не выводит в файл. Не понимаю, в чем проблема. Помогите, пожалуйста. #include "iostream" #include "stdlib.h" #include "fstream" #include "stdio.h" using namespace std;
C++ Как можно найти итерацию, на которой происходит "access violation reading location"? http://www.cyberforum.ru/cpp-beginners/thread1179925.html
Ситуация такая что имеется функция которая вызывается в цикле около 1 млн. раз, в какой-то из итераций выскакивает исключение "access violation reading location" как можно найти ошибку ? а то перебирать все 1000 000 вызовов функции не хочется %)
C++ Найти натуральное число M такое, что M делится на N и сумма цифр M делится на N 256 мегабайт, 2 секунды Задано натуральное число N (1 ≤ N ≤ 100 000). Найдите натуральное число M такое, что M делится на N и сумма цифр M делится на N, или сообщите, что такого числа не существует. Формат ввода В единственной строке входного файла записано число N. Формат вывода подробнее

Показать сообщение отдельно
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
18.05.2014, 18:17     Маршрутная перестановка. Замена switch-case
Здравствуйте. Программа уже написана и работает, но препод сказал, что нужно заменить switch-case. Подскажите, как эффективнее можно это сделать?

Задача программы закодировать и раскодировать текст.

Вот код:
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
using namespace std;
int main()
{   setlocale (LC_ALL, "RUS");
    fstream F,G;
    int c,N,M,q,P,j,v=0,k;
    cout<<"ВВЕДИТЕ"<<endl<<"1 для зашифровки текста"<<endl<<"2 для расшифровки текста"<<endl;
    cin>>c;
    switch(c)
    {       case 1: //Если выбрано шифрование
                    {   string t;
                        F.open("Вход1.txt");
                        G.open("Выход1.txt",ios::out);
                                while (!F.eof())
                                {   getline (F,t);
                                    cout<<"Начальная строка:"<<"'"<<t<<"'"<<endl;
                                    cout<<"Введите размер таблицы MxN. N=";
                                    cin>>N;
                                    cout<<"M=";
                                    cin>>M;
                                    char S[N][M];
                                    int frame=t.length();
                                    P=N*M-frame;            //кол-во пустых клеток
                                    string space="";
                                    if(t.length()<N*M)      // пустые клетки заполняются пробелами
                                        for(int q=0;q<P;q++)
                                        {space+=" ";}
                                    t+=space;
                                    for(int i=0;i<N;i++)     //присвоение элементам матрицы значений строки
                                        {   for(int j=0;j<M;j++)
                                            {S[i][j]=(char)t[i*M+j];}
                                        }
                                    cout<<endl;
                                    while(v<N)              //вывод начальной матрицы
                                        {   for(int j=0;j<M;j++){
                                            cout<<S[v][j];}
                                            cout<<endl;
                                            v++;
                                        }
                                    v=0;
                                    cout<<endl;
                            
                                    cout<<endl<<"Зашифрованная строка: ";
                                    for(int j=0;j<M;j++)   //вывод и запись таблицы по столбцам сверху вниз
                                        {   for(int i=0;i<N;i++)
                                            {cout<<S[i][j];}
                                        }
                                        cout<<endl;
                                        int y=0,E;
                                        int a[M]; //массив из номеров столбцов
                                        cout<<"Введите ключ"<<endl;
                                        for(int i=0;i<M;i++)
                                            {  cin>>a[i];} //ввод чисел массива,т.е. порядок вывода столбцов
                                        cout<<"Зашифрованная строка : ";
                                        while(y<M)        //вывод и запись столбцов по заданному пользователем порядку
                                            {   E=a[y];
                                                for(int i=0;i<N;i++)
                                                {   cout<<S[i][E];
                                                    G<<S[i][E];
                                                }
                                                y++;
                                            }
                                }
                                F.close();
                                G.close();
                                break;
                    }
            case 2: //Если выбрано дешифрование
                    {   string t,z;
                        F.open("Выход1.txt");
                                while (!F.eof())
                                {   getline (F,t);
                                    cout<<"Начальная строка:"<<"' "<<t<<" '"<<endl;
                                    cout<<"Введите размер таблицы MxN. N=";
                                    cin>>N;
                                    cout<<"M=";
                                    cin>>M;
                                    char S[N][M];
                                    int a[M],y=0,E;
                                    cout<<"Введите порядок"<<endl;
                                    for(int i=0;i<M;i++)
                                        { cin>>a[i];}
                                        while(y<M
                                              )
                                            {   E=a[y];
                                                for(int i=0;i<N;i++)
                                                {   S[i][E]=(char)t[y*N+i];}
                                                y++;
                                            }
                               
                                        while(v<N)              //вывод готовой расшифрованной матрицы
                                        {   for(int j=0;j<M;j++)
                                            { cout<<S[v][j];}
                                                cout<<endl;
                                                v++;
                                        }
                                        cout<<endl;
                                        cout<<"Начальная строка:";
                                        for(int i=0;i<N;i++)  //вывод и запись таблицы по столбцам сверху вниз
                                        {   for(int j=0;j<M;j++)
                                            {cout<<S[i][j];}
                                        }
                                }
                                F.close();
                                break;
                    }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru