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

Откуда бесконечный цикл?

30.11.2023, 13:19. Показов 608. Ответов 4

Author24 — интернет-сервис помощи студентам
Привет! Одной из задач данной программы является счёт нулей в столбцах матрицы и вывод на экран тех столбцов, в которых содержится более двух нулей. Проблема заключается в том, что цикл, начинающийся в 56-й строке, не завершается после того, как были выведены на экран все нужные столбцы, если они присутствовали в матрице. Помогите найти ошибку!..

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
/* Для матрицы К(m, n), 1<(m, n)<10, напечатать номера столбцов, содержащих более двух нулей.
Переставить строки по убыванию значений суммы элементов строк*/
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "russian");
    srand((int)time(0));
    int choice, m, n, i, j, min = 0, max = 0;
    int Matrix[9][9]{
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
    };
    do
    {
        cout << "Введите количество строк M, M > 0: "; cin >> m;
        cout << "Введите количество столбцов N, N > 0: "; cin >> n;
    } while (m <= 0 || n <= 0); 
 
    cout << "Выберите способ ввода\n";
    cout << "\tЕсли ручной ввод, введите 1.\nВ противном случае введите любую другую клавишу.\n";
    cin >> choice;
 
    if (choice == 1) {
        cout << "Введите значения матрицы";
        for (i = 0; i < m; i++)
            for (j = 0; j < n; j++) {
                cout << "\nЭлемент матрицы [" << i + 1 << "][" << j + 1 << "] равен ";
                cin >> Matrix[i][j];
            }
    }
    else
        for (i = 0; i < m; i++)
            for (j = 0; j < n; j++)
                Matrix[i][j] = rand() % 1000 - 500;
 
    cout << "\nИсходящий массив:\n";
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cout << Matrix[i][j] << " ";
        }
        cout << endl;
    }
 
    cout << "\nСтолбцы, которые содержат более 2 нулей:\n";
    int ZeroCounter;
    for (j = 0; j < n; j++) {
        ZeroCounter = 0;
        for (i = 0; i < m; i++) {
            if (Matrix[i][j] == 0) {
                ZeroCounter += 1;
            }
        }
        if (ZeroCounter > 2) {
            cout << j + 1 << "  ";
        }
    }
 
    int RowSums[9], temp;
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            RowSums[i] += Matrix[i][j];
 
    for (int i = 0; i < n; i++)
        for (int k = 0; k < m - i - 1; k++)
            if (RowSums[k] < RowSums[k + 1]) {
                for (int j = 0; j < n; i++) {
                    temp = Matrix[k][j];
                    Matrix[k][j] = Matrix[k + 1][j];
                    Matrix[k + 1][j] = temp;
                }
                temp = RowSums[k];
                RowSums[k] = RowSums[k + 1];
                RowSums[k + 1] = temp;
            }
 
    cout << "\nПолученный массив:\n";
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++)
            cout << Matrix[i][j] << " ";
        cout << endl;
    }
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2023, 13:19
Ответы с готовыми решениями:

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Бесконечный цикл
Доброго времени суток! Написал программу в среде Visual Studio 2010 Win32 project, но в ней...

Бесконечный цикл
void Number(int &amp;K, int &amp;L, int N) { if (K &lt; 0 &amp;&amp; K &gt; L &amp;&amp; L &gt; N) { cout &lt;&lt;...

Бесконечный цикл
Так. Консоль CLR Вод программа: #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot;...

4
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.11.2023, 13:41 2
С чего ты взял, что он не завершается? Добавь вывод сообщения после цикла.
1
2129 / 1212 / 503
Регистрация: 11.10.2018
Сообщений: 6,140
30.11.2023, 13:44 3
Неинициализирован массив RowSums, надо писать так:
C++
1
int RowSums[9]={0}, temp;
Цитата Сообщение от ILYOUHAA Посмотреть сообщение
C++
1
for (int k = 0; k < m - i - 1; k++)
- ошибка в это строке, все перепутали, столбцы и строки, это нужно переделать, заново заводить переменные не нужно было, если есть привязка i к числу строк, то так и надо было продолжать, а не городить кашу.
1
93 / 69 / 27
Регистрация: 30.03.2023
Сообщений: 189
30.11.2023, 13:45 4
Лучший ответ Сообщение было отмечено ILYOUHAA как решение

Решение

Вечный цикл - в 76 строке
Цитата Сообщение от ILYOUHAA Посмотреть сообщение
                for (int j = 0; j < n; i++)
Ошибка, т.к. инкрементируем опять i, а прове6ряем - j < n
C++
1
 for (int j = 0; j < n;j++)
Вас дебажить принципиально не учат?
1
0 / 0 / 0
Регистрация: 30.11.2023
Сообщений: 21
30.11.2023, 17:15  [ТС] 5
вообще пока не учили, поэтому я как бы сам старался посмотреть, и по итогу узнал, что в один момент в цикле несколько переменных почему-то приобретают значение в виде отрицательного семизначного числа. Почему так, я до сих пор не понял

Добавлено через 3 минуты
вообще пока не учили, поэтому я как бы сам старался посмотреть, и по итогу узнал, что в один момент в цикле несколько переменных почему-то приобретают значение в виде отрицательного семизначного числа. Почему так, я до сих пор не понял

Добавлено через 1 минуту
не заметил видимо. да и вправду зачем лишний раз int писал. сейчас попробую поменять. Спасибо

Добавлено через 30 минут
понял. Спасибо!

Добавлено через 29 секунд
ОШИБКА НАЙДЕНА! ВСЕМ СПАСИБО!
0
30.11.2023, 17:15
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2023, 17:15
Помогаю со студенческими работами здесь

Бесконечный цикл
Задача: Дед Мазай спасает зайцев. На N островках находится некоторое количество зайцев разной...

Бесконечный цикл for
Запишите цикл, который суммирует первые 100 натуральных чисел, которые делятся на 7 : используя...

Бесконечный цикл
Здравствуйте. Программа должна принимать некоторые значения, обрабатывать их и выдавать в виде...

Бесконечный цикл
Как ввести программу в бесконечный цикл на C++ ? Смотрел видео где делали бесконечный цикл (НО!)...

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

Бесконечный цикл
Простите что с таким лёгким вопросом, но мистика окутывает мою учёбу всё больше и больше ^^ Тут...

Бесконечный цикл
Как организовать бесконечный цикл с использованием оператора for, оператора while, оператора...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru