Написал небольшое приложение
#include "iostream"
#include <iomanip>
#include <cstdlib>
#include <sstream>
#include <string>
using namespace std;
int times = 0, start = 0, answ = 0;
template <typename T>
T fromString(const string& s)
{
istringstream iss(s);
T res;
iss >> res;
return res;
}
int InpInt(string s1)
{
int i = 0, resultat;
if (s1[0] == '-')
{
i++;
}
while (s1[i])
{
if ('0' <= s1[i] && s1[i] <= '9')
{
resultat = fromString<int>(s1);//перевод строки символов в int
}
else
{
resultat = 0;
goto end;
}
i++;
}
end:
return resultat;
}
int correctionInp(string s, int num_err)
{
const string positiv_otv = "Нет", negative_otv = "Нет";
string otv_user, inp_n, inp_el;
int resultat;
if (num_err == 1)
cout << "Вы ошиблись при вводе значения переменной n" << endl;
else
cout << "Вы ошиблись при вводе значения элемента массива" << endl;
cout << "Вы хотите ввести корректное значение?" << endl;
cout << "Если Вы хотите изменить значение на корректное введите Да" << endl;
cout << "Иначе, введите Нет" << endl;
cout << "Ваш ответ: ";
cin >> otv_user;
if (otv_user == "Да")
{
if (num_err == 1)
{
cout << "Введите колчество строк и столбцов двумерного массива n. n > 0. n = " << endl;
cin >> inp_n;
resultat = InpInt(inp_n);
}
else
cout << "Введите элемент массива" << endl;
cin >> inp_el;
resultat = InpInt(inp_el);
}
else
{
cout << "Вы точно хотите завершить программу?" << endl;
cout << "Для завершения программы введите Да" << endl;
if (num_err == 1)
{
cout << "Для изменения значения n введите Нет " << endl;
cout << "Ваш ответ: ";
cin >> otv_user;
}
else
{
cout << "Для изменеиня значения массива введите Нет ";
cout << "Ваш ответ: ";
cin >> otv_user;
}
if (otv_user == "Нет")
{
if (num_err == 1)
{
cout << "Введите колчество строк и столбцов двумерного массива n. n > 0. n = ";
cin >> inp_n;
resultat = InpInt(inp_n);
}
else
{
cout << "Введите значения элемента массива = ";
cin >> inp_el;
resultat = InpInt(inp_el);
if ((inp_el != "0") && (resultat == 0))
resultat = -12345;
}
}
else
resultat = 0;
}
return resultat;
}
int search_min(int **A, int n) {
int min = A[0][0];
long start_time, end_time;
start_time = clock();
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
if (min > A[i][j])
min = A[i][j];
}
end_time = clock();
times = end_time - start_time;
return min;
}
int search_max(int **A, int n) {
int max = A[0][0];
long start_time = clock();
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
if (max < A[i][j])
max = A[i][j];
}
long end_time = clock();
times = end_time - start_time;
return max;
}
int search_parallel_min(int **A, int n, int stream) {
int min;
#pragma omp parallel for num_threads(stream)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
if (min < A[i][j])
min = A[i][j];
}
return min;
}
int search_parallel_max(int **A, int n, int stream) {
int max;
#pragma omp parallel for num_threads(stream)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
if (max < A[i][j])
max = A[i][j];
}
times = clock();
return max;
}
int main()
{
string inp_el, inp_n;
int n = 8, m, k = 0, num_err = 0, min, max;
system("chcp 65001");
//cout << "Здравствуйте, уважаемый Пользователь!" << endl;
//cout << "Введите количество строк и столбцов двумерного массива n. n > 0. n = ";
//cin >> inp_n;
/*
n = InpInt(inp_n);
if ((n == 0) || (n < 0))
{
num_err = 1;
n = correctionInp(inp_n, num_err);
if (n == 0)
{
goto close;
}
}
close:
*/
int **A = new int *[n];
for (int j = 0; j < n; j++)
A[j] = new int[n];
if (n <= 5)
{
cout << "Введите элементы массива = ";
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
cin >> inp_el;
A[i][j] = InpInt(inp_el);
if (((A[i][j] == 0) && (inp_el != "0")) || ((A[i][j] == 0) && (inp_el != "-0")) || ((A[i][j] == 0) && (inp_el != "+0")))
{
num_err = 2;
A[i][j] = correctionInp(inp_n, num_err);
}
}
}
else
{
cout << "Массив будет введен с помощью генератора случайных чисел" << endl;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
A[i][j] = rand();
}
cout << "Вывод массива А" << endl;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
if (n > 15) {
if (i == 9) {
cout << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << "..... " << endl;
i = n - 2;
break;
}
cout << setw(5) << A[i][j] << " ";
if (j == n - 1)
cout << endl;
if (j == 9) {
cout << "..... " << setw(5) << A[i][n - 1] << endl;
break;
}
}
else {
cout << setw(5) << A[i][j] << " ";
if (j == n - 1)
cout << endl;
}
}
start = clock();
min = search_min(A, n);
max = search_max(A, n);
answ = clock();
//min = search_parallel_min(A, n, n);
//max = search_parallel_max(A, n, n);
times = answ - start;
cout << min << endl;
cout << max << endl;
cout << times << endl;
system("pause");
return 0;
}
Для отображения в консоли кириллицы использовал system("chcp 65001");
При запуске программа не выдала вообще ничего. Просто попросила нажать на любую кнопку, чтобы завершить работу.
А если не использовать переключение на кириллицу, то иероглифами, но программа будет выполняться Можете подсказать из-за чего такое происходит?
CLion
тут ни при чём. Измените кодировки исходников и консоли на UTF-8
(или на нужную вам кодировку, поддерживающую русский язык, главное - чтобы она была одна везде, но лучше - UTF-8
).
p.s.: не используйте system
, используйте <locale>
p.p.s.: тем более это уже спрашивали много раз Отображение кириллицы в CLion
Вначале метода main допишите:
setlocale(LC_ALL, "ru_RU.UTF-8");
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В примере указано что диск С но нужно менять в индивидуальном порядке как можно это сделать чтоб указывало?
Прочитал, что поля структуры хранятся в памяти последовательно(в порядке объявления) (+- платформзависимое выравнивание)
Перемещение функции gets_s из тела функции main в тело функции INPUT приводит к ошибке"Отсутствуют экземпляры перегруженная функция 'gets_s' соответствующие...
Падает задача выдавая Runtime errorПри этом на тестовом примере работает правильно