Проблема с Msvs

  • Автор темы Elkaz
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

Elkaz

#1
Здравствуйте. Доброго времени суток!
Давече решил заняться изучением языка Visual C++. На данный момент стоит задача максимально быстро и хорошо освоить этот язык, в связи с олимпиадой по информатике. Из языков программирования знаком лишь с PHP (говорят, что он и С++ похожи), мельком с Java. Основная проблема на данный момент - я чего-то не допонимаю в создание проекта.
Мои действия
File -> New -> Project -> Win32 App -> Empty project
File -> New -> File -> CPP
Пишу элементарный текст программы
Код:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!\n";
return 0;
}
При попытке комплилирования/дебага вылезает ошибка о несуществование .exe файла.

ScreenShot: http://server.az/photos/cpp.JPG
Заранее всем огромное спасибо за помощь в разрешение проблемы.

С ув.

P.S
Microsoft Visual Studio 5.0
 

grigsoft

Well-known member
15.11.2005
735
0
#2
Судя по всему ты говоришь Debug\Run, а сначала надо сказать Build.
И это VS 2005, а не 5.0.
 

grigsoft

Well-known member
15.11.2005
735
0
#4
Хм, ну в таком случае все собралось как надо и должно работать. Посмотри в настройки проекта - может отлаживается модуль не потому пути? Хотя если ты туда не лазил, то проблем быть не должно.
 

shisik

Well-known member
26.08.2007
154
0
#6
Или добавить
Код:
#pragma comment(linker, "/ENTRY:main")
#pragma comment(linker, "/SUBSYSTEM:console")
 
M

Maxx

#7
сдается мне ошибка в том что ты просто создаешь файл
а его надо еще добавить в проект project->add new item или project->add existing item
 
E

Elkaz

#8
сдается мне ошибка в том что ты просто создаешь файл
а его надо еще добавить в проект project->add new item или project->add existing item
Да, все оказалось верно :( Огромное спасибо!
Далее делаем Build:

'elkaz.exe': Loaded 'C:\projects\elkaz\debug\elkaz.exe', Symbols loaded.
'elkaz.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', No symbols loaded.
'elkaz.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', No symbols loaded.
'elkaz.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcp80d.dll', Symbols loaded.
'elkaz.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll', Symbols loaded.
'elkaz.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
The program '[2744] elkaz.exe: Native' has exited with code 0 (0x0).

Консоль открывается и сразу закрывается.
Так и должно быть? Из-за return 0?
Всем спасибо за ответы!
 

shisik

Well-known member
26.08.2007
154
0
#9
<!--QuoteBegin-Elkaz+7:09:2007, 17:28 -->
<span class="vbquote">(Elkaz @ 7:09:2007, 17:28 )</span><!--QuoteEBegin-->Консоль открывается и сразу закрывается.[/quote]
Консоль можно задержать функцией
Код:
cin.get();
<!--QuoteBegin-Elkaz+7:09:2007, 17:28 -->
<span class="vbquote">(Elkaz @ 7:09:2007, 17:28 )</span><!--QuoteEBegin-->Так и должно быть? Из-за return 0?[/quote]
Да
 
E

Elkaz

#10
Огромное спасибо Вам.
На этом вопросы о компиляторе исчезли :(
Тему можно удалять/в архив/закрывать
Куда лучше вопросы о синтаксисе задавать, когда возникнут?
 
E

Elkaz

#11
Написал простенький калькулятор :( (не хватило терпения :-D)
Код:
#include <iostream>
using namespace std;
int calculator (int n1, int n2, int act){
int res;
if (act == 0){ res = n1+n2; }
if (act == 1){ res = n1-n2; }
if (act == 2){ res = n1*n2; }
if (act == 3){ res = n1/n2; }
return res;
}
int main() {
// Lesson 9 (by myself)
int one,two,a,x;
cout << "HELP of CALCULATOR v1.0 by Elkaz\n";
cout << "0 = to pile\n";
cout << "1 = to subtract\n";
cout << "2 = to multiply\n";
cout << "3 = to divide\n\n";
cout << "Enter number\n";
cin >> one;
cout << "Enter another number\n";
cin >> two;
cout << "Enter action between them\n";
cin >> a;
cout << "Result of your actions is " << calculator (one,two,a);
}
На данный момент вопрос только как реализовать что бы программа могла получать "+", "-" ... вместо 0,1 :)
Делал так:
Код:
int calculator (int n1, int n2, char* act){
int res;
if (act == "+"){ res = n1+n2; }
if (act == "-"){ res = n1-n2; }
if (act == "*"){ res = n1*n2; }
if (act == "/"){ res = n1/n2; }
return res;
}
Но где-то не то :(
 

shisik

Well-known member
26.08.2007
154
0
#12
Нельзя использовать
Код:
char *a;
cin >> a;
Можно сделать так
Код:
char a[2];
cin >> a;
Но это ещё не всё. if (act == "+") никогда не будет true. Для сравнения строк следует использовать специальную функцию !strcmp(act, "+") из string.h Перед ней следует ставить ! т.к. она возвращает false в случае совпадения и true, если строки разные.

Код:
#include <iostream>
#include <string>
using namespace std;

int calculator(int n1, int n2, char *act){
int res = 0;
if (!strcmp(act, "+"))
res = n1 + n2; 
if (!strcmp(act, "-"))
res = n1 - n2; 
if (!strcmp(act, "*"))
res = n1 * n2; 
if (!strcmp(act, "/"))
res = n1 / n2; 
return res;
}

int main() 
{
int one, two;
char a[2];
cout << "HELP of CALCULATOR v1.0 by Elkaz\n";
cout << "0 = to pile\n";
cout << "1 = to subtract\n";
cout << "2 = to multiply\n";
cout << "3 = to divide\n\n";
cout << "Enter number\n";
cin >> one;
cout << "Enter another number\n";
cin >> two;
cout << "Enter action between them\n";
cin >> a;
cout << "Result of your actions is " << calculator(one, two, a) << endl;
return 0;
}
Кроме того, в данном случае можно вместо строки char[] использовать просто символ char. Тогда с ним можно работать как с простым числом (сравнивать через ==).

Код:
#include <iostream>
using namespace std;

int calculator (int n1, int n2, char act)
{
int res = 0;
if (act == '+')
res = n1 + n2; 
if (act == '-')
res = n1 - n2; 
if (act == '*') 
res = n1 * n2; 
if (act == '/') 
res = n1 / n2; 
return res;
}

int main() 
{
int one, two;
char a;
cout << "HELP of CALCULATOR v1.0 by Elkaz\n";
cout << "0 = to pile\n";
cout << "1 = to subtract\n";
cout << "2 = to multiply\n";
cout << "3 = to divide\n\n";
cout << "Enter number\n";
cin >> one;
cout << "Enter another number\n";
cin >> two;
cout << "Enter action between them\n";
cin >> a;
cout << "Result of your actions is " << calculator(one, two, a) << endl;
return 0;
}
 
E

Elkaz

#13
Всем еще раз здравствуйте.
Задача: нарисовать прямоугольник :) и что бы после вывода консоль не закрылась.
Код:
#include <iostream>
using namespace std;
void drawRectangle (int width, int height){
for (int i=0; i<height; i++){
for (int j=0; j<width; j++){
cout << "*";
}
cout << "\r\n";
}

}
int main() {
int inputW, inputH;
cout << "DRAW_RECTANGLE: v1.0";
cout << "\r\nEnter width: ";
cin >> inputW;
cout << "Now enter height: ";
cin >> inputH;
cout << "RESULT\r\n";
drawRectangle(inputW,inputH);
cin.get();	
}
Где ошибаюсь? :)
 
Статус
Закрыто для дальнейших ответов.