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

В программе для лабораторного задания выдает ошибку Integer division by zero

13.01.2018, 00:43. Показов 1410. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо по для лабораторной работы сделать задание:
"Задана матрица A(n,n). Первый элемент каждого чётного столбца заменить средним арифметическим среди простых чисел этого столбца, первый элемент каждого нечётного столбца заменить средним арифметическим среди составных чисел этого столбца."

Сделал программу, но она что-то совсем не работает, выдавая ошибку "Необработанное исключение по адресу 0x013027E8 в ConsoleApplication11.exe: 0xC0000094: Integer division by zero." указывая на данный участок программы " a[1][j] = sum / q; "

Пишу код на уровне плинтуса, так что хрен знаю что не так и не могу найти причину этой ошибки, да почему-то делится на ноль, судя по тексту ошибки, но не должно делить на ноль.
Тестил на такой матрице:
1 7 4 7
12 2 11 20
9 3 4 4
3 8 4 6

Сама программа:
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int n;
    cout << "Введите размер матрицы" << endl;
    cin >> n;
    int a[10][10];
    cout << "Введите матрицу" << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> a[i][j];
        }
    }
 
    for (int j = 0; j < 10; j++) {
        int sum, q = 0;
        if (j % 2 == 0) {
            for (int i = 0; i < n; i++) {
                int r = 0;
                for (int z = 1; z <= a[i][j]; z++) {
                    if (a[i][j] % z == 0)
                        r++;
                }
                if (r < 3) {
                    sum = sum + a[i][j];
                    q++;
                }
            }
            a[1][j] = sum / q;
        }
        else {
            for (int i = 0; i < n; i++) {
                int r = 0;
                for (int z = 1; z <= a[i][j]; z++) {
                    if (a[i][j] % z == 0)
                        r++;
                }
                if (r > 2) {
                    sum = sum + a[i][j];
                    q++;
                }
            }
            a[1][j] = sum / q;
        }
    }
 
    int size = 7;
 
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            cout << " " << a[i][j];
        cout << endl;
    }
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2018, 00:43
Ответы с готовыми решениями:

Visual Basic выдает ошибку run-time error 11 division bu zero
Помогите может чего напутала!!! Раньше работало, а теперь выдает ошибку &quot;run-time error 11 division bu zero&quot; Public Sub...

Выдает ошибку:Нельзя преобразовать тип array . of integer к array . of integer
Program1.pas(44) : Нельзя преобразовать тип array of array of integer к array of array of integer program abc; uses crt; ...

Выдает ошибку Is not valid integer value
Даны три числа. Нужно найти среднее из них. При вводе чисел выдается окно с ошибкой &quot;is not valid integer point value Не могу...

1
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
13.01.2018, 01:47
q объявляется как равный 0
C++
22
int sum, q = 0;
и увеличивается только в случае, когда в одном цикле r > 2, а в другом r < 3
C++
44
45
46
47
if (r > 2) {
    sum = sum + a[i][j];
    q++;
}
C++
30
31
32
33
if (r < 3) {
    sum = sum + a[i][j];
    q++;
}
после этого идёт деление на q, которое скорее всего в одном из циклов имеет нулевое значение (при r <= 2 или r >= 3)

Попробуйте изменить 35 и 49 строки например на
C++
35
a[1][j] = q == 0 ? 0 : sum / q;
З.Ы. На всякий случай
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <iostream>
#include <random>
#include <string>
#include <math.h>
#include <iomanip>
using namespace std;
 
bool IsSimple(int x) {
    if (abs(x) == 1) return 0;
    for (int i = 2; i*i <= abs(x); i++)
        if (abs(x) % i == 0) return 0;
    return 1;
}
 
void PrintMatrix(double **a, int n, int m, string s) {
    cout << s + "\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++)
            cout << setprecision(2) << a[i][j] << "\t";
        cout << "\n";
    }
}
 
int main(void)
{
    setlocale(LC_ALL, "rus");
    random_device r;
    mt19937 gen(r());
    uniform_int_distribution<> dist(-10, 10);
    int n, m;
    cout << "N, M = ";
    cin >> n >> m;
    double **a = new double*[n];
    for (int i = 0; i < n; i++)
        a[i] = new double[m];
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            a[i][j] = dist(gen);
 
    PrintMatrix(a, n, m, "Матрица:");
    for (int j = 0; j < m; j++) {
        int sum = 0, count = 0;
        if (j % 2 != 0) {
            for (int i = 0; i < n; i++)
                if (IsSimple(a[i][j])) {
                    sum += a[i][j];
                    count++;
                }
            a[0][j] = count == 0 ? 0 : (double)sum / count;
        }
        else {
            for (int i = 0; i < n; i++)
                if (!IsSimple(a[i][j])) {
                    sum += a[i][j];
                    count++;
                }
            a[0][j] = count == 0 ? 0 : (double)sum / count;
        }
    }
 
    PrintMatrix(a, n, m, "\nПреобразованная матрица:");
 
    for (int i = 0; i < n; i++)
        delete[] a[i];
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2018, 01:47
Помогаю со студенческими работами здесь

Выдает ошибку в Делфи is not a valid integer value
Выдает ошибку is not a valid integer value. Не помогу понять в чем проблема, объясните пожалуйста. type kostdomino = record ...

Выдает ошибку: Нельзя преобразовывать тип real к integer
Выдает ошибку &quot;Нельзя преобразовывать тип real к integer.&quot; В строчке 21. Уже не первый раз такое, хочу понять от чего зависит эта ошибка?....

Почему при пустом Edit2 выдает ошибку Is not valid integer value
procedure TForm1.Button4Click(Sender: TObject); var kol:integer; begin kol:=strtoint(edit2.text); StringGrid3.Visible:=false; ...

Найти ошибку в программе: в visual studio выдает ошибку
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() { double x, E, ypred, y, S; ...

Вылетает ошибка Integer division by zero.
Есть такой класс : class TreapNode { public: char character; TreapNode* leftChild; TreapNode* rightChild; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru