Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Зашифровать/расшифровать сообщение по указанному правилу https://www.cyberforum.ru/ cpp-beginners/ thread2378650.html
Как реализовать на Си? Зашифруйте/расшифруйте сообщение Метод шифровки: в начале печатается последний символ потом первый затем предпоследний, а потом второй и т.д.
Подсчитать количество строк файла, в которых есть слова равной максимальной длины C++
дан символьный файл f. подсчитать количество строк в которых есть слова максимальной длины. Результат с соответствующим комментарием записать в первую стройку файла f. Заранее благодарю.
Реализовать "падающие" буквы начиная с конца строки C++
Как реализовать? Написать программу со следующим сценарием: пользователь вводит строку, нажимает Enter и далее варианты: Буквы падают с конца строки.
C++ В строке символов изменить на обратный порядок следования цепочек , составленных из малых русских букв Как реализовать? В указанной строке символов изменить на обратный порядок следования цепочек , составленных из малых русских букв. Например строка ' дым123як #1ферзь$'; должна... https://www.cyberforum.ru/ cpp-beginners/ thread2378644.html
C++ Строки, решение задание стандартными функциями https://www.cyberforum.ru/ cpp-beginners/ thread2378638.html
Задание: В строке имеются лишние проблемы Нужно преобразовать ее так, чтобы между словами был ровно один пробел. Подскажите, с помощью какие стандартных функций строк можно решить эту задачу? На...
Работа с ассоциативными массивами C++
Всем привет. Можете объяснить на примере, как работает ассоциативный массив? Задача для примера такая, получаем строку символов. В строке цифры и буквы латинского алфавита. Необходимо занести их в...
C++ Напечатать индексы всех равных элементов матрицы
Напечатайте индексы всех равных элементов произвольного массива А(N;N).
C++ Переставить строки и столбцы квадратной матрица А, чтобы алгебраические суммы произведений элементов Так переставить строки и столбцы квадратной матрица А, чтобы алгебраические суммы произведений элементов i-го столбца и i-й строки (знак суммы, сверху n, снизу j = 1) a(ij)*a(ji) убывали при... https://www.cyberforum.ru/ cpp-beginners/ thread2378595.html
C++ Найти корни нелинейного уравнения https://www.cyberforum.ru/ cpp-beginners/ thread2378594.html
Задание: Реализуйте алгоритмы методов нахождения корней нелинейного уравнения заданного согласно варианту и вычислите все его корни в заданном диапазоне. Входными данными являются: ...
C++ Вывод определенного количества символов заданной строки текста в обратной последовательнгости Есть примерный код: int main() { setlocale(LC_ALL, "Russian"); cout << "Введите строку" << endl; std::string str; getline(cin, str); int n = 0; cout << "Сколько символов (слева)... https://www.cyberforum.ru/ cpp-beginners/ thread2378592.html
Мозгоправ
1725 / 1021 / 466
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
23.12.2018, 22:44 0

Потенциально неинициализированная локальная переменная-указатель (Ошибка C4703) - Как исправить? - C++ - Ответ 13187945

23.12.2018, 22:44. Показов 2605. Ответов 7
Метки (Все метки)

Лучший ответ Сообщение было отмечено MysteriousLord как решение

Решение

Вы много напутали и по мелочи, и не по мелочи. Я там поправил.
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <fstream>
using namespace std;
 
void killMatrix(int ***mx, int size) {
    if (*mx == nullptr || size <= 0)
        return;
    for (int i = 0; i < size; ++i)
        delete[](*mx)[i];
    delete[](*mx);
    *mx = nullptr;
}
 
int main() {
    setlocale(LC_ALL, "rus");
    int size_Knuth = 0, size = 0;
    short int change = 1;
    int **KMatrix = nullptr, **KnArray = nullptr;
 
    do {
        cout <<
            "\n--------------------------------------------------\n"
            " Меню:\n"
            "  1 - Ввод разреженного массива из файла;\n"
            "  2 - Преобразование разреженного массива в массив по схеме Кнута;\n"
            "  3 - Вывод разреженного массива на экран;\n"
            "  4 - Вывод массива по схеме Кнута на экран;\n"
            "  5 - Получение значения элемента по номеру строки и номеру столбца;\n"
            "  6 - Определение максимального значения среди ненулевых элементов в указанном столбце;\n"
            "  0 - Выход из программы.\n"
            "--------------------------------------------------\n"
            " Ввод: ";
        cin >> change;
 
        cout << endl;
        switch (change) {
        case 1:     // Ввод разреженного массива из файла
        {
            killMatrix(&KMatrix, size);
            ifstream Matrix("RazMatr.txt");
            if (!Matrix.is_open()) {
                cout << "\n  Не удалось открыть файл!\n";
                change = 0;
            }
            else {
                Matrix >> size;
                killMatrix(&KnArray, size_Knuth);       // массив по Кнуту будет неактуален для новых данных
                size_Knuth = 0;
                KMatrix = new int*[size];
                for (int i = 0; i < size; i++) {
                    KMatrix[i] = new int[size];
                    for (int j = 0; j < size; j++) {
                        Matrix >> KMatrix[i][j];
                        if (KMatrix[i][j] != 0)
                            size_Knuth++;
                        if (Matrix.eof())
                            KMatrix[i][j] = 0;      // если eof, то инициализировать нулями!
                    }
                }
            }
            Matrix.close();
            if (KMatrix != nullptr) {
                cout << endl;
                cout << " Ввод массива из файла был успешно произведен!" << endl;
                cout << " Размер разреженного массива: " << size << "x" << size << "." << endl;
                cout << endl;
            }
            else
                cout << endl << " Не удалось произвести ввод разреженного массива из файла!" << endl << endl;
            break;
        }
        case 2:     // Преобразование разреженного массива в массив по схеме Кнута
        {
            if (KMatrix == nullptr) {
                cout << endl << " Разреженный массив не создан!" << endl << endl;
                break;
            }
 
            killMatrix(&KnArray, size_Knuth);
            if (size_Knuth > 0) {
                KnArray = new int*[size_Knuth];
                for (int i = 0; i < size_Knuth; i++)
                    KnArray[i] = new int[3];
 
                int k = 0;
                for (int i = 0; i < size; ++i)
                    for (int j = 0; j < size; ++j)
                        if (KMatrix[i][j] != 0) {
                            KnArray[k][0] = i;
                            KnArray[k][1] = j;
                            KnArray[k][2] = KMatrix[i][j];
                            k++;
                        }
                if (KnArray != nullptr) {
                    cout << endl;
                    cout << " Разреженный массив успешно удалось преобразовать в массив по схеме Кнута!";
                    cout << endl << " Размер массива: " << size_Knuth << "x3.";
                    cout << endl;
                }
                else
                    cout << " Не удалось преобразовать массив!" << endl;
            }
            else
                cout << endl << " Количество ненулевых элементов равно 0, массив не удастся преобразовать." << endl << endl;
            break;
        }
        case 3:     // Вывод разреженного массива на экран
        {
            if (KMatrix == nullptr) {
                cout << endl << " Разреженный массив не создан!" << endl << endl;
                break;
            }
            if (size != 0) {
                cout << "\n Разреженный массив:" << endl;
                for (int i = 0; i < size; i++) {
                    for (int j = 0; j < size; j++)
                        cout << KMatrix[i][j] << "\t";
                    cout << endl;
                }
                cout << endl;
            }
            else
                cout << endl << " Размер массива равен 0!" << endl << endl;
            break;
        }
        case 4:     // Вывод массива по схеме Кнута на экран
        {
            if (KnArray == nullptr) {
                cout << endl << " Массив по схеме Кнута не создан!" << endl << endl;
                break;
            }
            cout << "\n Массив:" << endl;
            for (int i = 0; i < size_Knuth; i++)
                cout << KnArray[i][0] << "\t" << KnArray[i][1] << "\t" << KnArray[i][2] << endl;
            cout << endl;
            break;
        }
        case 5:     // Получение значения элемента по номеру строки и номеру столбца
        {
            if (KnArray == nullptr) {
                cout << endl << " Массив по схеме Кнута не создан!" << endl << endl;
                break;
            }
            int i, j;
            cout << " Ввод данных:" << endl;
            cout << "  Введите номер строки: "; cin >> i;
            cout << "  Введите номер столбца: "; cin >> j;
            cout << endl << " Значение элемента, хранящиегося по адресу [" << i << "][" << j << "]: " << KnArray[i][j];
            cout << endl;
            break;
        }
        case 6:     // Определение максимального значения среди ненулевых элементов в указанном столбце
        {
            if (KnArray == nullptr) {
                cout << endl << " Массив по схеме Кнута не создан!" << endl << endl;
                break;
            }
            int j, max = 0;
            cout << " Введите номер столбца: "; cin >> j;
            for (int i = 0; i < size_Knuth; i++) {
                if (KnArray[i][1] == j)
                    if (KnArray[i][2] > max)
                        max = KnArray[i][2];
            }
            cout << " Максимальное значение среди ненулевых элементов: " << max << endl;
        }
        case 0:     // нах!
            break;
        default:
            cout << "\n Неверный выбор! Попробуйте ещё раз!";
            break;
        }
    } while (change != 0);
 
    killMatrix(&KMatrix, size);
    killMatrix(&KnArray, size_Knuth);
 
    cout << "\n Время работы программы = " << clock() / 1000.0 << " сек.\n";  //вывод времени работы программы
    system("pause");
    return 0;
}
Остались большие сомнения по поводу п.5 в меню. Мне кажется, что имелось ввиду вывести значение элемента по номеру строки и номеру столбца разреженной матрицы, пользуясь матрицей Кнута. Иначе как-то совсем примитивно просто. Но трогать не стал.

Добавлено через 42 минуты
А вообще, в плане самосовершенствования, было бы интереснее сделать класс SparseMatrix (разреженная матрица). Внешний интерфейс сделать по типу обычной матрицы (причём не обязательно квадратной), а под капотом - массив по схеме Кнута. Реализация, на самом деле, может быть достаточно простая: вектор структур. В структуре хранить координаты значения и само значение. Использование вектора избавляет от ручного выделения/освобождения памяти внутри класса.

Вернуться к обсуждению:
Потенциально неинициализированная локальная переменная-указатель (Ошибка C4703) - Как исправить? C++
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2018, 22:44

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Выдает ошибку C4703: используется потенциально неинициализированная локальная переменная-указатель "a"
Выдает ошибку C4703: используется потенциально неинициализированная локальная переменная-указатель...

Используется потенциально неинициализированная локальная переменная-указатель
// ex4.cpp: определяет точку входа для консольного приложения. // ...

Ошибка: Используется потенциально неинициализированная локальная переменная
Ошибка: Используется потенциально неинициализированная локальная переменная prev - 48 строчка,...

"Используется потенциально неинициализированная локальная переменная - указатель"
Доброго времени суток! Возникла проблема в программе, на 68 строке пишет, что &quot;используется...

Использована неинициализированная локальная переменная. Не пойму, как исправить
У меня есть структура typedef struct { char *processor, *plata; float chastota; int...

Неинициализированная локальная переменная - исправить ошибку
не могу устранить ошибку &quot;использована неинициализированная локальная переменная a&quot; #include...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.