Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.79
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
#1

Ошибка: Run-Time Check Failure #3 - The variable 'zero' is being used without being initialized. - C++

10.03.2012, 23:06. Просмотров 4411. Ответов 18
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun_mult(int *mas)
{
    int zero;
    
    for (int i=0; i<10; i++){
        if (mas[i]=0)
        zero=i;
        else break;
        
    }
    return zero;
}
в чем фейл?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2012, 23:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка: Run-Time Check Failure #3 - The variable 'zero' is being used without being initialized. (C++):

Ошибка Run-Time Check Failure #3 - The variable 'k' is being used without being initialized
2. Даны два вектора и найти угол между ними и модуль векторного произведения...

Ошибка: Run-Time Check Failure #3 - The variable 'i' is being used without being initialized
в чём ошибка (просьба подправить) #include &quot;stdafx.h&quot; #include &lt;math.h&gt;...

Ошибка Run-Time Check Failure #3 - The variable 'y' is being used without being initialized
Выскакивает вот тавкая вот ошибка, подскажите как исправить. Ошибка...

Ошибка: Run-time check failure: variable 'C' is being used without being initialized
Здравствуйте, Помогите решить одну проблему. Есть задание написать программу,...

Ошибка Run-Time Check Failure #3 - The variable 'chcount' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'chcount' is being used without being...

Run-Time Check Failure #3 - The variable 'c' is being used without being initialized
VS 2013 После введения знака выдает такую ошибку Как можно исправить?...

18
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.03.2012, 23:12 #2
Цитата Сообщение от m1x Посмотреть сообщение
C++
1
2
3
if (mas[i]=0)
    zero=i;
else break;
На первой же итерации пойдет по ветке else, как следствие получим возвращение неинициализированной переменной.
0
sandye51
программист С++
833 / 592 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
10.03.2012, 23:12 #3
m1x, в том что условие ни разу не выполнилось (поскольку ты написал равно вместо == ) и переменная zero осталось неиницилизированной
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
10.03.2012, 23:14 #4
А я исправленный код напишу
C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun_mult(int *mas)
{
        int zero;
        
        for (int i=0; i<10; i++){
                if (mas[i]==0)
                zero=i;
                else break;
                
        }
        return zero;
}
0
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
10.03.2012, 23:14  [ТС] #5
Цитата Сообщение от sandye51 Посмотреть сообщение
m1x, в том что условие ни разу не выполнилось (поскольку ты написал равно вместо == ) и переменная zero осталось неиницилизированной
спасибо, но ошибка осталась
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.03.2012, 23:14 #6
Mustik, а если там не будет нуля?
0
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
10.03.2012, 23:15  [ТС] #7
Цитата Сообщение от Mustik Посмотреть сообщение
А я исправленный код напишу
C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun_mult(int *mas)
{
        int zero;
        
        for (int i=0; i<10; i++){
                if (mas[i]==0)
                zero=i;
                else break;
                
        }
        return zero;
}
аналогично
та же ошибка
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.03.2012, 23:21 #8
Цитата Сообщение от m1x Посмотреть сообщение
int zero;
C++
1
int zero(-1);
0
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
10.03.2012, 23:23  [ТС] #9
для проверки сделал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun_mult(int *mas)
{
        int zero;
        
        for (int i=0; i<10; i++){
                if (mas[i]==0)
                zero=i;
                else zero=1111111;
                
        }
        return zero;
}
ввожу массив (с элементом равным нулю конечно же) и всегда получаю ответ 1111111
неправильно работает

Добавлено через 37 секунд
Цитата Сообщение от soon Посмотреть сообщение
C++
1
int zero(-1);
это как?
з.ы. все так же неправильно работает
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.03.2012, 23:24 #10
m1x, сообщение #8 гляньте. А выводит 1111111 потому, что break нет.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.03.2012, 23:24 #11
m1x, просто какое-то значение нужно изначально zero задать.
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.03.2012, 23:25 #12
Цитата Сообщение от m1x Посмотреть сообщение
это как?
А вот прямо так и запишите
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
10.03.2012, 23:26 #13
Цитата Сообщение от m1x Посмотреть сообщение
аналогично
та же ошибка
Переменную zero нужно инициализировать.
Товарищ soon уже написал как это делается. Его запись аналогична
C++
1
int zero = -1;
.
А вам повезло, нашли еще одну с = вместо == .
0
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
10.03.2012, 23:28  [ТС] #14
где break должен стоять?
0
Mustik
56 / 56 / 6
Регистрация: 10.07.2011
Сообщений: 229
10.03.2012, 23:28 #15
Цитата Сообщение от m1x Посмотреть сообщение
ввожу массив (с элементом равным нулю конечно же) и всегда получаю ответ 1111111
Так если у тебя последний элемент не будет равен 0, то zero будет равно 111111.
Может быть надо
C++
1
2
3
4
5
6
...
else
{
    zero = 111111;
    break;
}
0
sandye51
программист С++
833 / 592 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
10.03.2012, 23:29 #16
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
#include <iostream>
#include <cstdlib>
#include <clocale>
 
template <typename T>
int find_zero(const T* array, unsigned int size)
{
    T test = T();
    
    for (unsigned int i = 0; i < size; ++i)
        if (array[i] == test)
            return static_cast<int>(i);
    
    return -1;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int array[] = {1, 2, -1, 0, 1};
    
    int index = find_zero(array, sizeof(array) / sizeof(int));
    if (index >= 0)
        std::cout << "Ответ: " << index << std::endl;
    else
        std::cout << "В массиве нет нулевых элементов" << std::endl;
    
    system("Pause");
    return EXIT_SUCCESS;
}
ответ: 3
0
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
10.03.2012, 23:32  [ТС] #17
написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
int fun_mult(int *mas)
{
        int zero=-1;
        
        for (int i=0; i<10; i++){
                if (mas[i]==0)
                zero=i;                
                
        }
        return zero;
}
но в случае если в массиве два нуля, то выводит номер последнего из них
а нужно чтобы выводило номер первого
где-то должен быть break
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.03.2012, 23:34 #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun_mult(int *mas)
{
        int zero=-1;
        
        for (int i=0; i<10; i++){
                if (mas[i]==0)
                {
                  zero=i;                
                  break;
                }
        }
        return zero;
1
m1x
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
10.03.2012, 23:35  [ТС] #19
Цитата Сообщение от BumerangSP Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
int fun_mult(int *mas)
{
        int zero=-1;
        
        for (int i=0; i<10; i++){
                if (mas[i]==0)
                {
                  zero=i;                
                  break;
                }
        }
        return zero;
благодарю


всем спасибо
0
10.03.2012, 23:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2012, 23:35
Привет! Вот еще темы с решениями:

Run-Time Check Failure #3 - The variable 'i' is being used without being initialized
#include &quot;stdafx.h&quot; #include &quot;cstdlib&quot; #include &quot;cstring&quot; #include...

Run-Time Check Failure #3 - The variable 'v' is being used without being initialized
Mc Visual Studio 2010 C++ при построении таблицы выдает ошибку ...

C++ - Run-Time Check Failure #3 - The variable 'c' is being used without being initialized
Нужно исправить код. Вводится последовательность целых чисел. Для каждого числа...

Run-Time Check Failure #3 - The variable 'k' is being used without being initialized
Дано целое число n&gt;1 . Найти наименьшее целое число k , при котором выполняется...


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

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

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