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

Программа в windows выполняется нормально, а в UNIX возникает бесконечный цикл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция должна вычислять рандомное значение от a до b http://www.cyberforum.ru/cpp-beginners/thread1147507.html
Создать 2 функции, первая должна вычислять рандомное значение от a до b( a и b мы должны ввести сами),это значение должно выводится в массив,состоящий из 20 символов( то есть нужно срандомить 20 раз) который находится во второй функции и вывести этот массив на экран. Помогите пожалуйста.Спасибо кто отозвался
C++ Программа перевода числа из 10ой системы в двоичную Сам код: #include <iostream> using namespace std; int main() { long int i; int value; cout << "Vvedite chislo: "; cin >> value; http://www.cyberforum.ru/cpp-beginners/thread1147506.html
C++ Сортировка массива по столбцам
Здравствуйте, столкнулся с проблемой сортировки массивы быстрой сортировкой. Нужно упорядочить каждый столбец матрицы по убыванию. Я задаю динамический массив,задаю еще один массив для сортировки, а дальше даже без понятия... Может кто написать код для быстрой сортировки, применительно к моему заданию? #include "stdafx.h" #include <iostream> #include <time.h> #include <conio.h> #include...
Создать массив из случайных чисел за пожеланием пользователя и вычислить среднее арифметическое простых элементов C++
Задан массив из N элементов. Организовать его введение из клавиатуры или создать из случайных чисел за пожеланием пользователя и вычислить среднее арифметическое простых элементов массива. Если можно, то создайте максимально просто, что бы все понятно было) спс за помощь)
C++ Многопоточность при сортировке массивов http://www.cyberforum.ru/cpp-beginners/thread1147478.html
Уважаемые, столкнулся с ситуацией, имею 3 массива, содержимое которых одинаково (координаты точек в 3д пространстве), произвожу сортировку каждого массива по определенному измерению (x, y, z), хотел спросить, можно ли как-то ускорить процесс, возникла идея многопоточности (т.е. одновременно выполнять сортировку 3-х массивов), но я не уверен что я корректно мыслю т.к. не разу не сталкивался с...
C++ Компиляторы. Какие преимущества между "кнопкой" и консолью? В наличии два компилятора: от vs и intel с оболочками и консоли. Какие преимущества между "кнопкой" и консолью? подробнее

Показать сообщение отдельно
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
13.04.2014, 22:57     Программа в windows выполняется нормально, а в UNIX возникает бесконечный цикл
Суть программы - меню из 5 пунктов.
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <cstdlib>
#include <iostream>
#include <string>
#include <algorithm>
 
#ifdef _WIN32
#define CLEAR_SCREEN "cls"
#else
#define CLEAR_SCREEN "clear"
#endif
 
#define NOTSET 0
#define DELETED 1
#define EXIST 2
 
using namespace std;
 
bool END = false, CONT = true;
short int STATUS = NOTSET;
string str = "";
 
void prepare_cin()
{
    cin.clear();
    cin.sync();    
}
char _ch()
{
    prepare_cin();
    char ch = 'a';
    cin.get(ch);
    return ch;  
}
bool checkStr()
{
     switch ( STATUS )
     {
            case NOTSET: cout << "Ошибка: строка не была введена!\n"; return false;
            case DELETED: cout << "Ошибка: строка была удалена ранее!\n"; return false;
            case EXIST: return true;
            default: cout << "Ошибка статуса\n"; return false;
     }
}
 
void delete_str()
{
     if ( checkStr() )
     {
          cout << "Строка \n\"" << str << "\"\nбыла удалена\n";
          str = "";
          STATUS = DELETED;
     }
}
 
void input_str()
{
     if ( STATUS == EXIST ) cout << "Строка уже существует. Вот она:\n" << str << endl;
     else
     {
         string tmp = "";
         cout << "Введите строку, ограничение - 1000 символов\n";
         prepare_cin(); getline ( cin, tmp );
         if ( tmp.length() > 1000 ) cout << "Ваша строка больше 1000 символов. Она будет автоматически обрезана\n";
         str = tmp.substr (0, 1000);
         STATUS = EXIST;
         cout << "\nВведённая строка:\n" << str << endl;
     }
}
 
void find_str()
{
     if ( checkStr() )
     {
         cout << "Введите подстроку, которую вы хотите найти\n";
         string sub = "";
         prepare_cin(); getline(cin, sub);
         int pos = str.find(sub);
         if (pos == -1)
                cout << "Подстрока не найдена" << endl;
         else
         {
             cout << "Строка с выделенным результатом поиска: \n" <<
                 str.substr(0, pos) << "\n------>" <<
                 str.substr(pos, sub.length()) << "<------\n" <<
                 str.substr(pos + sub.length()) << endl;
         }
     }
}
 
void sort_str()
{
     if ( checkStr() )
     {
        for (int i = 0; i < str.size(); i++) //Удаление пробелов из строки          
        {                                                   
            if (str.at(i) == ' '){ str.erase(i, 1); i--; }  
        }                                               
        sort(str.begin(), str.end());
        cout << "Результат: " << str << std::endl;
     }  
}
 
int menu()
{
    system (CLEAR_SCREEN);
    cout <<
    "Внимание! Ввод русских символов в widnows неправильно работает.\nНо вы можете попробовать :)\n\n"
    "\tМеню:\n"
    "1. Ввести новую строку\n"
    "2. Удалить строку\n"
    "3. Найти подстроку\n"
    "4. Отсортировать строку\n"
    "0. Завершить программу\n"
    "\nВведите команду: ";
    char answer = _ch();
    cout << "\n";
    switch (answer)
    {
    case '1': input_str(); break;
    case '2': delete_str(); break;
    case '3': find_str(); break;
    case '4': sort_str(); break;
    case '0': END = true; return 0;
    default: cout << "Неверный символ" << endl;
    }
    cout << "\nВведите 0, чтобы завершить программу или любой другой символ, чтобы продолжить.\n";
    char exit_ = _ch();
    if ( exit_ == '0' ) END = true;
} 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    while ( !END ) menu();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru