Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 28
1

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

11.12.2018, 23:40. Показов 1648. Ответов 2
Метки нет (Все метки)

Выдает ошибку C4703: используется потенциально неинициализированная локальная переменная-указатель "a"
Как исправить подскажите плз!!
А еще посмотрите можно ли как то сократить? Или исправить.
Могу задание скинуть если надо.
Вот код:
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
184
185
186
187
188
189
190
191
192
193
bool simple(unsigned long element);
void c(unsigned long* a, int n);
void s(unsigned long* a, int n);
void Arif(int n);
void mas_b(int n, unsigned long* x);
void UDAL_PROST(int n, unsigned long* a);
void Uporad(int n, unsigned long* a);
int main()
{
    setlocale(0, "Russian");
 
    int n = 0;
    unsigned long *a;
    int answer1 = 100;
    int i, u, z, t = 0, j, f = 0;
    while (answer1 != 0) {
        system("cls");
        cout << "Лабораторная работа №6 ИВБО-12-18 Матачун В.С." << endl << endl;
        cout << "Задание 2" << endl;
        cout << "Меню\n";
        cout << "1) Заполнить массив\n";
        cout << "2) Вывести массив\n";
        cout << "3) Является ли массив ариф.прогрессией\n";
        cout << "4) Сформировать массив В, поместив в элемент В[i] значение равное  количеству делителей элемента А[i]\n";
        cout << "5) Выполнить упорядочение элементов массива А по правилу:\n с младших индексов нули, затем положительные, затем отрицательные\n (порядок следования элементов в исходном массиве оставить прежним).\n";
        cout << "6) Удалить из массива простые числа\n";
        cout << "0) Выход\n";
        cout << "Ваш выбор: ";
        cin >> answer1;
        system("cls");
        cout << "Лабораторная работа №6 ИВБО-12-18 Матачун В.С." << endl << endl;
        switch (answer1)
        {
        case 1: {
            cout << "Введите кол-во элементов в массиве: ";
            cin >> n;
            a = new unsigned long[n];
            cout << "Введите элементы массива: ";
            c(a, n);
            system("pause");
            break;
        }
        case 2: {
            cout << "Вывод массива\n";
            s(a, n);
            system("pause");
            break;
        }
        case 3: {
            cout << "Является ли массив ариф.прогрессией\n";
            printf("Введите количество элементов массива");
            cin >> n;
            Arif(n);
            system("pause");
            break;
        }
        case 4: {
            cout << "Сформировать массив В, поместив в элемент В[i] значение равное  количеству делителей элемента А[i]\n";
            printf("Введите количество элементов массива");
            cin >> n;
            mas_b(n,a);
            system("pause");
            break;
        }
        case 5: {
            cout << "Выполнить упорядочение элементов массива А по правилу:\n с младших индексов нули, затем положительные, затем отрицательные\n (порядок следования элементов в исходном массиве оставить прежним).\n";
            printf("Введите количество элементов массива");
            cin >> n;
            Uporad(n,a);
            system("pause");
            break;
        }
        case 6: {
            cout << "Удалить из массива простые числа\n";
            printf("Введите количество элементов массива");
            cin >> n;
            UDAL_PROST(n,a);
            system("pause");
            break;
        }
        default:
            break;
        }
    }
 
    system("pause");
    return 0;
}
 
void c(unsigned long* a, int n) {//заполнение массива
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
}
void s(unsigned long* a, int n) {               //вывод массива
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
}
bool simple(unsigned long element) {             //простое ли число
    if (element == 0 || element == 1) {
        return false;
    }
    else if (element == 2) {
        return true;
    }
    else {
        int calc = 0;
        for (int i = 2; i <= element / 2; i++) {
            if (!(element % i)) {
                calc++;
            }
        }
        return (calc >= 1) ? false : true;
    }
}
void Arif(int n, unsigned long* a) {
    int i; int t = 0;
    c(a, n);
    for (i = 2; i <= n - 1; i++) {
        if ((a[i] - a[i - 1]) != (a[i + 1] - a[i])) {
            t = 1;
        }
        if (t == 1) {
            printf("\nЭто не арифметическая прогрессия\n");
        }
        else {
            printf("\nЭто арифметическая прогрессия,ee разность =\n\n", a[2] - a[1]);
        }
    }
}
void mas_b(int n, unsigned long* a) {
    c(a, n);
    int i=0;
    int c = 0;
    for (int u = 1; u <= a[i]; u++)
    {
        if (!(a[i] % u))
        {
            c++;
 
        }
    }
    int *b = (int *)malloc(n);
    b[i] = c;
    cout << "b[" << i + 1 << "]" << "=" << c << endl;
}
void UDAL_PROST(int n, unsigned long* a) {
    c(a, n);
    int i;
    int k = 0;
    for (i = 0; i < n; i++) {
        if (!simple) {
            k = k + 1;
            a[k] = a[i];
        }
        n = k;
    }
    for (i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
}
void Uporad(int n, unsigned long* a) {
    c(a, n);
    int i, j = 0;
    for (i = 1; i < n; i = i + 1)
    {
        if (a[i] == 0)
        {
            j = i - 1;
            while (j >= 0 && a[j] != 0)
            {
                a[j + 1] = a[j];
                j = j - 1;
            }
            a[j + 1] = 0;
        }
        else if (a[i] > 0)
        {
            j = i - 1; int temp = a[i];
            while (j >= 0 && a[j] > 0)
            {
                a[j + 1] = a[j];
                j = j - 1;
            }
            a[j + 1] = temp;
        }
    }
    for (i = 1; i <= n; i++) {
        printf("%d ", a[i - 1]);
    }
}
0

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

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2018, 23:40
Ответы с готовыми решениями:

Исправить ошибку: "C4703: используется потенциально неинициализированная локальная переменная-указатель"
Вообщем выдает одну ошибку в функции добавления в 76 строке, а именно &quot;Ошибка 1 error C4703:...

Ошибка C4703 используется потенциально неинициализированная локальная переменная-указатель "A"
Помогите не могу понять, что не так то, уже многое перепробовал #include &quot;stdafx.h&quot; #include...

Error C4703: используется потенциально неинициализированная локальная переменная-указатель
// prog8.cpp: определяет точку входа для консольного приложения. #include &lt;stdio.h&gt; #include...

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

2
Параллельный Кот
1901 / 824 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
12.12.2018, 00:34 2
Лучший ответ Сообщение было отмечено Nishen как решение

Решение

Цитата Сообщение от DED MIMI Посмотреть сообщение
Выдает ошибку C4703: используется потенциально неинициализированная локальная переменная-указатель "a"
Как исправить подскажите плз!!
Присвоить ей начальное значение nullptr. И в case 1 перед выделением памяти неплохо бы ее сначала освободить.

Цитата Сообщение от DED MIMI Посмотреть сообщение
А еще посмотрите можно ли как то сократить? Или исправить.
Вот список примерных действий, начинать читать его лучше с конца.

1. Запускайте и проверяйте, делает программа то, что вам нужно или нет. Есть впечатление, что вы ее еще ни разу не запускали.
2. Читайте warning'и и добейтесь того, чтобы их не было.
3. Функция проверки числа на простоту может быть проще.
4. В цикле нет необходимости писать повторяющиеся действия в каждом case, достаточно это сделать в начале или в конеце цикла (это о повторении строк system("pause")).
5. В объявлении функции имена переменных не нужны, достаточно оставить только типы.
C++
1
2
//void c(unsigned long* a, int n);
void c(unsigned long*, int);
6. Дайте своим функциям и переменным нормальные имена, ваши a, c, u, z непонятно зачем и для чего. В такой программе нет никакого желания разбираться.
0
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 28
23.12.2018, 21:06  [ТС] 3
Спасибо! Слушай не поможешь с 1-м заданием? Нужно удалить из массива самую длинную подпоследовательность, состоящую из простых чисел. Долго бьюсь.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2018, 21:06

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

Потенциально неинициализированная локальная переменная-указатель (Ошибка C4703) - Как исправить?
Здравствуйте, как можно исправить вот эти ошибки: Ошибка C4703 используется потенциально...

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

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

Выдается ошибка использована неинициализированная локальная переменная "H" и "V"
#include&lt;conio.h&gt; #include&lt;iostream&gt; using namespace std; int main(){ double S,T,H,U;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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