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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.69
Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 62
#1

Run-Time Check Failure #3 - C++

21.02.2010, 10:51. Просмотров 6855. Ответов 9
Метки нет (Все метки)

Господа, может кто мне поможет.
Код (глупый конечно код, но как могу):

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.
Причину не подскажете, и как это исправить(поподробнее, с кодом, пожалуйста)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2010, 10:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Run-Time Check Failure #3 (C++):

Run-Time Check Failure # 2 - C++
Нужно чтобы програмка находила расстояние между прямыми в пространстве.Она работает,находит правильно,все хорошо.Вот только вконце...

Run-Time Check Failure #3 - C++
//Написать программу, формирующую из двух WAV файлов новый WAV файл, являющийся суммой двух первых. #include &lt;Windows.h&gt; #include...

Run-Time Check Failure #3 - C++
// // first.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Run - Time Check Failure #2 - S - C++
Вот сам код, результат выдает правильно, но в самом конце, когда в консоли пишет &quot;Для продолжения введите ...&quot; выскакивает ошибка Run -...

Run-time check failure #0 - C++
Добрый день. Помогите пожалуйста, уже который день не могу разобраться с ошибкой. Есть WinAPI обертка. Этот оконный класс наследуется COM...

ошибка Run-Time Check Failure #2 - C++
под конец програмки освобождал память и ошибка пропадала но происходило аварийное завершение ( подскажите где проблема . class...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 11:21 #2
C++
1
2
int num[3] = {0};
char v1[4][20] = {0};
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.02.2010, 11:22 #3
Drozd Oleg, переменная var в функции ThreadFunc1 (и массив num в THreadFunc2) НЕ ПОЛУЧИЛИ НИКАКОГО ЗНАЧЕНИЯ. То что переменные с такими именами описаны (и присвоены) в функции
tmain делу не помогает - ЭТО РАЗНЫЕ ПЕРЕМЕННЫЕ.
Один из выходов - описать var и num перед всеми фунциями, скажем, сразу после #include
(в остальных функциях эти переменные истребить)
Второй - передавать их в виде параметров.
Второй путь - граммотнее.
Но, наверное, тебе понятнее пока будет первый
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 11:22 #4
а лучше передавай ссылки на них
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
21.02.2010, 11:25 #5
char var;
switch (var);
А что в var находится? Ничего. Надо сначала присвоить какое-нибудь значение ппременной. Аналогично и с num.
0
Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 62
21.02.2010, 12:00  [ТС] #6
Day, после using namespace std записал:
C++
1
2
3
char v1[4][20];
char var;
int num[3];
в остальных местах стер, ошибка пропала, но при запуске программы получил вот эту радость:
0
Миниатюры
Run-Time Check Failure #3  
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 12:13 #7
Drozd Oleg, я точно знаю, что кто-то уже написал прогу перевода чисел, поищите ее на форуме, она скорее всего есть в FAQ
0
Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 62
21.02.2010, 12:25  [ТС] #8
Так то оно так, но хочется эту заставить работать
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
21.02.2010, 13:50 #9
Цитата Сообщение от Drozd Oleg Посмотреть сообщение
C++
1
2
3
4
for(int i=0;i<4;i++)
{
cout <<v1<<" ";
}
Имя массива без индексов аналогичен указателю на его первый элемент, думается, то что выводится на экран, есть адрес первого элемента массива v1.
1
Drozd Oleg
1 / 1 / 1
Регистрация: 21.02.2010
Сообщений: 62
21.02.2010, 14:21  [ТС] #10
Да, это оно! Теперь все работает как надо! Спасибо всем!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2010, 14:21
Привет! Вот еще темы с ответами:

Ошибка Run-Time Check Failure #2 - S - C++
#include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int main() { //Матрица предпочтений int Predpochenia; ...

Сортировка по алфавиту. Run-Time Check Failure #3 - C++
Помогите пожалуйста. Visual c++ 2010 ругается. пишет Run-Time Check Failure #3 - The variable 'str' is being used without being...

Run-Time Check Failure #3 - The variable 's' is being used without being initialized - C++
Ребят в чем может быть косяк запарился уже. Выдает эту ошибку я хз что с ней делать:( #include &quot;stdafx.h&quot; #include&lt;iostream&gt; ...

Ошибка в проге. Run-Time Check Failure #3 - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int first (void) { setlocale(LC_ALL, &quot;Russian&quot;); int n; do ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.02.2010, 14:21
Ответ Создать тему
Опции темы

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