Форум программистов, компьютерный форум CyberForum.ru

Run-Time Check Failure #3 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.69
Drozd Oleg
 Аватар для Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 61
21.02.2010, 10:51     Run-Time Check Failure #3 #1
Господа, может кто мне поможет.
Код (глупый конечно код, но как могу):

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <clocale>
#include <windows.h>
using namespace std;
// Функции потока
DWORD WINAPI ThreadFunc1(PVOID Parametr)
{
char v1[4][20];
char var;
switch(var)
{
case 'Y': strcpy (v1[0],"минус");break;
case 'N': strcpy (v1[0],"");break;
}
return 0;
}
 
DWORD WINAPI ThreadFunc2(PVOID lpParametr)
{
int num[3];
char v1[4][20];
switch(num[0])
{
case 1: strcpy(v1[1],"сто");break;
case 2: strcpy(v1[1],"двести");break;
case 3: strcpy(v1[1],"триста");break;
case 4: strcpy(v1[1],"четыреста");break;
case 5: strcpy(v1[1],"пятьсот");break;
case 6: strcpy(v1[1],"шестьсот");break;
case 7: strcpy(v1[1],"семьсот");break;
case 8: strcpy(v1[1],"восемьсот");break;
case 9: strcpy(v1[1],"девятьсот");break;
}
if( num[1] == 0 || num[1] > 1 )
{
if( num[1] > 1 )
{
switch( num[1] )
{
case 2: strcpy(v1[2],"двадцать");break;
case 3: strcpy(v1[2],"тридцать");break;
case 4: strcpy(v1[2],"сорок");break;
case 5: strcpy(v1[2],"пятьдесят");break;
case 6: strcpy(v1[2],"шестьдесят");break;
case 7: strcpy(v1[2],"семьдесят");break;
case 8: strcpy(v1[2],"восемдесят");break;
case 9: strcpy(v1[2],"девяносто");break;
}
}
switch( num[2] )
{
case 1: strcpy(v1[3],"один");break;
case 2: strcpy(v1[3],"два");break;
case 3: strcpy(v1[3],"три");break;
case 4: strcpy(v1[3],"четыре");break;
case 5: strcpy(v1[3],"пять");break;
case 6: strcpy(v1[3],"шесть");break;
case 7: strcpy(v1[3],"семь");break;
case 8: strcpy(v1[3],"восемь");break;
case 9: strcpy(v1[3],"девять");break;
}
}
else if( num[1] == 1 )
{
switch( num[2] )
{
case 0: strcpy(v1[2],"десять");strcpy(v1[3],"");break;
case 1: strcpy(v1[2],"одиннадцать");strcpy(v1[3],"");break;
case 2: strcpy(v1[2],"двенадцать");strcpy(v1[3],"");break;
case 3: strcpy(v1[2],"тринадцать");strcpy(v1[3],"");break;
case 4: strcpy(v1[2],"четырнадцать");strcpy(v1[3],"");break;
case 5: strcpy(v1[2],"пятнадцать");strcpy(v1[3],"");break;
case 6: strcpy(v1[2],"шестнадцать");strcpy(v1[3],"");break;
case 7: strcpy(v1[2],"семнадцать");strcpy(v1[3],"");break;
case 8: strcpy(v1[2],"восемнадцать");strcpy(v1[3],"");break;
case 9: strcpy(v1[2],"девятнадцать");strcpy(v1[3],"");break;
}
}
return 0;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE,"Russian");
DWORD dwThreadId1,dwThreadId2;
HANDLE hThread1,hThread2;
int num[3];
char var;
char v1[4][20];
cout <<"Ваше число отрицательное?: Y/N \n";
cin >> var;
cout <<"Введите число в формате NNN:\n";
for(int i=0;i<3;i++)
{
cin >> num[i];
}
// Код вызова функции для создания потока
// Создание потока в приостановленном состоянии
hThread1 = CreateThread(
            NULL,         // атрибуты безопасности по умолчанию
            0,            // размер стека используется по умолчанию
            ThreadFunc1,   // функция потока
            &var, // аргумент функции потока
            CREATE_SUSPENDED,            // флажки создания используются по умолчанию
            &dwThreadId1); // возвращает идентификатор потока
hThread2 = CreateThread(
            NULL,         // атрибуты безопасности по умолчанию
            0,            // размер стека используется по умолчанию
            ThreadFunc2,   // функция потока
            &num, // аргумент функции потока
            CREATE_SUSPENDED,            // флажки создания используются по умолчанию
            &dwThreadId2); // возвращает идентификатор потока
// Выполнение потока
ResumeThread (hThread1);
ResumeThread (hThread2);
// При успешном завершении проверяет возвращаемое значение.
if (hThread1  == NULL && hThread2  == NULL)
{
cout <<"Потоки созданы не были\n";
}
else 
{
cout <<"Потоки успешно созданы\n";
CloseHandle( hThread1 );
CloseHandle( hThread2 );
}
cout <<"Введенное число прописью:\n";
for(int i=0;i<4;i++)
{
cout <<v1<<" ";
}
getch ();
return 0;
}
Компиллятор Visual Studio 2008 ругается:
Run-Time Check Failure #3 - The variable 'var' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'num' is being used without being initialized.
Причину не подскажете, и как это исправить(поподробнее, с кодом, пожалуйста)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
21.02.2010, 11:21     Run-Time Check Failure #3 #2
C++
1
2
int num[3] = {0};
char v1[4][20] = {0};
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
21.02.2010, 11:22     Run-Time Check Failure #3 #3
Drozd Oleg, переменная var в функции ThreadFunc1 (и массив num в THreadFunc2) НЕ ПОЛУЧИЛИ НИКАКОГО ЗНАЧЕНИЯ. То что переменные с такими именами описаны (и присвоены) в функции
tmain делу не помогает - ЭТО РАЗНЫЕ ПЕРЕМЕННЫЕ.
Один из выходов - описать var и num перед всеми фунциями, скажем, сразу после #include
(в остальных функциях эти переменные истребить)
Второй - передавать их в виде параметров.
Второй путь - граммотнее.
Но, наверное, тебе понятнее пока будет первый
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
21.02.2010, 11:22     Run-Time Check Failure #3 #4
а лучше передавай ссылки на них
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.02.2010, 11:25     Run-Time Check Failure #3 #5
char var;
switch (var);
А что в var находится? Ничего. Надо сначала присвоить какое-нибудь значение ппременной. Аналогично и с num.
Drozd Oleg
 Аватар для Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 61
21.02.2010, 12:00  [ТС]     Run-Time Check Failure #3 #6
Day, после using namespace std записал:
C++
1
2
3
char v1[4][20];
char var;
int num[3];
в остальных местах стер, ошибка пропала, но при запуске программы получил вот эту радость:
Миниатюры
Run-Time Check Failure #3  
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
21.02.2010, 12:13     Run-Time Check Failure #3 #7
Drozd Oleg, я точно знаю, что кто-то уже написал прогу перевода чисел, поищите ее на форуме, она скорее всего есть в FAQ
Drozd Oleg
 Аватар для Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 61
21.02.2010, 12:25  [ТС]     Run-Time Check Failure #3 #8
Так то оно так, но хочется эту заставить работать
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.02.2010, 13:50     Run-Time Check Failure #3 #9
Цитата Сообщение от Drozd Oleg Посмотреть сообщение
C++
1
2
3
4
for(int i=0;i<4;i++)
{
cout <<v1<<" ";
}
Имя массива без индексов аналогичен указателю на его первый элемент, думается, то что выводится на экран, есть адрес первого элемента массива v1.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2010, 14:21     Run-Time Check Failure #3
Еще ссылки по теме:

C++ Run-Time Check Failure #3 - The variable 'k' is being used without being initialized
C++ - Run-Time Check Failure #3 - The variable 'c' is being used without being initialized C++
ошибка Run-Time Check Failure #2 C++

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

Или воспользуйтесь поиском по форуму:
Drozd Oleg
 Аватар для Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 61
21.02.2010, 14:21  [ТС]     Run-Time Check Failure #3 #10
Да, это оно! Теперь все работает как надо! Спасибо всем!
Yandex
Объявления
21.02.2010, 14:21     Run-Time Check Failure #3
Ответ Создать тему
Опции темы

Текущее время: 09:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru