Kompilator C++ - tworzenie programu

0

Witam. Mam już na komputrze 3 kompilatory:
Dev-C++
CodeBlocks
Microsoft visual c++

Chciałem dziś napisać pierwszy program C++ i napotkałem 3 problemy otóż to:

  1. Nie wiem np. jak zacząc pisać w Microsoft Visual C++ poniewaz załączam daje New>>Project(powinnienem dać File?)>> potem nie wiem co wybrać? Może Win32 project?
  2. Po wpisaniu kodu
    Kod:
#include<iostream>
int main()
{
    std::cout<<"Witamy na pokładzie";
}
 

Dev-C++ zaczyna wyć z powodu drugiej linijki. CodeBlocks normalnie otworzył ten plik. A w Microsofcie nawet nie wiem jak go skompilować i załączyć :/

Bardzo bym prosił o pomoc, i ewentualnie jak są gdzieś jakieś tutoriale dotyczące tego co opisałem wyżej to prosiłbym o zapodanie, bo jakoś nie potrafie znaleźć.

0

w MSVC++ wybierasz nowy projekt>console application>zaznaczasz empty project. Później tylko dokładasz pliki do projektu.
W tym kodzie masz błąd - brak średnika.

1

Masz dwa kompilatory. Te pierwsze to tylko IDE, które mają załączoną ze sobą mingw (w code::blocks nowszy, w dev-c++ starszy). Polecam ci zapoznać się z jakąś książką dla zupełnych początkujących, nauczyć się korzystać z wyszukiwarki forumowej, google i PRZYŁOŻYĆ SIĘ DO NAUKI JĘZYKA ANGIELSKIEGO.

0

byku_guzio zrobiłem tak jak napisałeś wkleiłem kod, ze średnikiem ;)
Pojawiła się konsola na chwile i tyle co po niej było. Może złą bibliotekę podałem?
Wklejam screena:
user image

PS. Do kolegi wyżej, nie do końca Cię rozumiem, na jakiej podstawie osądzasz mnie o nieznajomość angielskiego? Wydaje mi się że angielski znam wystarczająco dobrze ;)

0

Wszystko jest ok. Dałeś pewnie Start Debugging w takim wypadku konsola zatrzyma się tylko jeżeli będziesz pobierał dane od użytkownika lub na jakimś breakpoint'cie. Odpal przez Start Without Debugging.

P.S. Wywal tego DevC++, bo on się do niczego nie nadaje

5

Nie rozumiem za bardzo tej masochistycznej chęci stałych użytkowników tego forum do rozwiązywania problemów, które pojawiają się przynajmniej raz na tydzień. Na normalnych forach podaje się słowo kluczowe do wyszukiwarki, jak ktoś się nudzi to i link do tematu, w którym problem został już poruszony i temat się zamyka.

0

Odpaliłem without debugging i nic sie nie zmieniło ;)
Mam jeszcze jedno pytanko:
Jak zacząć pisać taki program w Code::Blocks? File>New>project>console aplication>...>GNU GCC Compiler?

0

Co do main() w Dev, może powinna zawierać argumenty?

1
xeo545x39 napisał(a)

Co do main() w Dev, może powinna zawierać argumenty?

Mogę się mylić, ale stary MinGW może myśli że main wtedy przyjmuje dowolną ilość argumentów. Ale bez działa.

Code::Blocks nie wymaga stosowania projektów do kompilowania tak jak VS, co jest niewątpliwie wygodne przy pisaniu jednoplikowych programów. Tworzysz nowy plik, zapisujesz jako .cpp i możesz kompilować i uruchamiać bez przeszkód. A Deva wywal od razu.

0

Dev-C++
CodeBlocks
Microsoft visual c++

To nie są kompilatory :>

0

Ciekawe z czego się uczysz, że kazali zainstalować 3 środowiska przed rozpoczęciem kursu.;>

Btw. Wam też już się nie chce powtarzać, że z Dev-C++ się nie korzysta?;(

0
allocer napisał(a)

Btw. Wam też już się nie chce powtarzać, że z Dev-C++ się nie korzysta?;(

Fakt,że się powtarzamy,ale zawsze trzeba głosić dobrą nowinę pośród ciemnego ludu ;P
Albowiem kiedyś przyjdzie nam być może współpracować z takimi ludkami-wtedy lepiej,aby już umieli się posługiwać porządnymi narzędziami

0

Dobra, wszystko już czaję, mam kolejny problem, napisałem kolejny program i normalnie go otwiera w konsoli, po wpisaniu wartosci stopy konsola sie zamyka :/?

 #include<iostream>
int main()
{
	int		stopy;
	double	metry;
	double	przelicznik= 0.3 ;

	std::cout << "Podaj wysokosc w stopkach: ";
	std::cin >> stopy;

	metry = stopy *przelicznik;
	std::cout << "\n";
	std::cout<< stopy <<"stop to" << metry << "metrów\n";
}

DEBUGGER: ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

0

No bo ma się zamykać. Po zakończeniu programu konsola po prostu się zamyka i jest to poprawne zachowanie. Zawsze możesz coś wczytać na końcu programu ze standardowego wyjścia.
Warto używać takiego wynalazku jak google: "zatrzymanie okna konsoli c++"

0

Racja, sorki, nie pomyślałem ;)

Mamy taki kod:

 
int m;
int zakoncz=3;		
for( m=0 ; m<10 ; m=m+1)
		{
			std::cout<< "*";
			if(m>zakoncz)break;
		}

I dlaczego wyświetla 5 gwiazdek, skoro 4>3 (m przyjmuje wartosc 4 a zakoncz ma 3)?

0
#include<iostream>
using namespace std;

int main(){

const int zakoncz=3;

for(int i=0;i<10;){
    if(i<zakoncz){
        cout<<"*";
        i++;
    }
    else break;
  }
}

Zmienną "i" zwiększasz dopiero po sprawdzeniu warunku, jeśli będzie on mniejszy od "zakoncz" to zostanie wyświetlona "gwiazdka". U Ciebie problem jest taki, że nigdzie nie sprawdzasz tego warunku przed wypisaniem odpowiedzi.

0

Ok, rozumiem, mi to nie potrzebne, tylko pytam dlaczego tak jest, w takim razie u mnie wystarczyło instrukcje if dac linijke wyżej i wszystko git :)
Ale mogę wywnioskować że pętla for po instrukcji break nie jest od razu opuszczana, tylko dokańczana aż do if (nie wiem czy mnie zrozumiecie, ale tak ja to rozumuje :D)

0

Mam 3 kolejne pytania:

  1. Dlaczego typ char(jak i signed char) ma zakres wartości od -128 do 127 skoro ten typ przechowuje tylko znaki(litery itp.) a nie przechowuje liczb ujemnych(do tego mamy funkcje int)?? Kompletnie tego nie rozumiem
  2. Czy typ wchar_t różni się od char tym że są w nim różnego rodzaju znaki takie jak ą,ę,ń itp?
  3. Po co mi stała znakowa np:
char znak;
znak = 'A'; 

Przecież mogę normalnie napisać A w tym miejscu w którym będę chciał, nie muszę przecież specjalnie tego deklarować... chyba że to jest przydatne w innej sytuacji, w takim razie w jakiej? :)

0
probena napisał(a)

Racja, sorki, nie pomyślałem ;)

Mamy taki kod:

 
int m;
int zakoncz=3;		
for( m=0 ; m<10 ; m=m+1)
		{
			std::cout<< "*";
			if(m>zakoncz)break;
		}

I dlaczego wyświetla 5 gwiazdek, skoro 4>3 (m przyjmuje wartosc 4 a zakoncz ma 3)?

M = 0; 0>3 = False
M = 1; 1>3 = False
M = 2; 2>3 = False
M = 3; 3>3 = False
M = 4; 4>3 = True => break

Skoro gwiazdkę drukujesz przed sprawdzeniem warunku, to drukuje się 5 razy.

EDIT: Sorki, wygłupiłem się, nie zauważyłem, że ktoś już odpisał.

0
  1. Oczywiście, że char przechowuje liczby, to jest tylko kwestia interpretacji zawartości zmiennej. Zauważ, że każdy znak ma przyporządkowaną jakąś wartość(patrz ASCII).

  2. wchar_t po pierwsze zajmuje więcej miejsca od char i może przechowywać większy zakres wartości, co za tym idzie więcej różnych znaków.

  3. to nie jest stała, tylko zwykła zmienna. W jaki sposób chciałbyś np. pobrać od użytkownika znak? Przecież nie wpiszesz go na sztywno w kodzie. Co do stałej znakowej (const char) to wyobraź sobie taką sytuację: kod w podejmuje jakieś działania w zależności od tego czy np. na drugim miejscu w napisie jest litera A i robi to w 200 miejscach w programie. I teraz jeżeli w tych 200 miejscach masz np. if(... == 'A'){...}, nagle podejmujesz decyzję, że jednak tą specjalną literą będzie B. Co będzie prostsze, szybsze, łatwiejsze, mniej błędogenne: zmiana tego A na B w tych 200 miejscach, czy zmiana w jednym miejscu - definicji tej stałej znakowej?

0
probena napisał(a)

Mam 3 kolejne pytania:

  1. Dlaczego typ char(jak i signed char) ma zakres wartości od -128 do 127 skoro ten typ przechowuje tylko znaki(litery itp.) a nie przechowuje liczb ujemnych(do tego mamy funkcje int)?? Kompletnie tego nie rozumiem
  2. Czy typ wchar_t różni się od char tym że są w nim różnego rodzaju znaki takie jak ą,ę,ń itp?
  3. Po co mi stała znakowa np:
char znak;
znak = 'A'; 

Przecież mogę normalnie napisać A w tym miejscu w którym będę chciał, nie muszę przecież specjalnie tego deklarować... chyba że to jest przydatne w innej sytuacji, w takim razie w jakiej? :)

  1. W systemach komputerowych liczby nieujemne zapisuje się w NKB a liczby ze znakiem w U2 (najczęściej). Char to 8 bitów no i 10000000b w U2 to -128 dziesiętnie.
    W zależności od interpretacji może mieć zakres 0-255 lub -128 - 127.
  2. Wchar t
  3. To zmienna jest, a nie stała, to zależy do czego chcesz używać czasami, można pominąć a czasami nie...
0

Sry, ale w Od zera do gier kodera masz zainstalowac 1 środowisko :D

0

byku_guzio, dzieki za wytłumaczenie, a powiedz mi jeszcze ad. 1, skoro char przechowuje liczby(wydaje mi się że chodzi tu o cyfry np. wiek, ktore nie sa wykorzystywane do obliczeń), to jak wyswietlic w konsoli liczbę -14(skoro obsługuje on od -128 do 127) przy pomocy tego typu? Mówię o zapisie dziesiątkowym, nie szesnastkowym.

PS. Czy to normalne ze przy nauce tego jezyka nie wszystko jest od razu takie jasne, czy to ja jestem taki tępy? :O

0
  1. nie wiem z jakiego źródła się uczysz, więc ciężko powiedzieć ;) Ale ogólnie C++ jest niespójnym i raczej trudnym językiem(ale moim ulubionym - nie sposób się przy nim nudzić)

  2. nie, chodzi tu o liczby. Pobaw się trochę tym, tu masz jakieś przykładowy kod:

char c = 'A';
int i = 2;
cout << static_cast<char>(c + i) << endl; //ten static_cast tu nie robi różnicy(chyba), ale dla pewności niech będzie
cout << static_cast<int>(c) << endl; //rzutowanie na int, żeby znak był traktowany jako liczba
c = '5';
i = c - '0';
cout << i;

Żeby lepiej zrozumieć co tu się dzieje popatrz na to: http://pl.wikipedia.org/wiki/ASCII

0

@probena To o co pytasz to są ELEMENTARNE podstawy programowania. Weź jakąś książkę przerób najpierw, a potem zadawaj pytania jak już nabierzesz trochę doświadczenia, bo inaczej stron w tym wątku będzie więcej stron niż w "trochę humoru"

0

zacznij od Pascala (pobierz Free Pascal Compiler), bo od C++ ciężko zacząć i będziesz co chwile zadawał pytania wkurwiające osoby które chcą od czasu do czasu pomóc innym. Jak napiszesz jakiś program który robi już coś konkretnego to pobierz sobie Delphi, który w zasadzie niewiele różni się od Pascala (albo w ogóle - nie jestem pewien), będziesz mógł w miarę płynnie przejść do programowania obiektowego i zacząć pisać aplikacje które już jakoś wyglądają (okienkowe). Jak opanujesz w stopniu dopuszczalnym Delphi to zabierz się dopiero za C++ (w konsoli). Opcjonalnie możesz zacząć od C# w konsoli, ale pascal i tak jest łatwiejszy na początek

0

krwq szukasz dziury w całym, skoro osoby wkur**am to powinny one opuścić to forum bo od tego jest ta podkategoria 'newbie'.
Pytania trzeba zadawać bo zawsze jest coś niejasne, jak widzisz niektórzy potrafia się uczyć C++, ja wcześniej bawiłem się w jakimś basicu, delphi ale jakoś mnie to nie zadowalało to wolałem przejśc na programowanie orientowane obiektowo, na razie nie narzekam, uczę się z symfoni C++, jedyne co mi się troche nie podoba, to to że na początku jest strasznie dużo teorii i mało praktyki (nawet w ćwiczeniach nie ma nic o tym żeby napisać jakiś program), a mi lepiej wchodzi do łba kiedy klupie coś w kompilatorze, dlatego nie mów mi od czego zaczynać, zrobiłem jak zrobiłem i tego nie zmienię. Może i zadam czasem bezsensowne pytanie, ale od tego jest to forum i użytkownicy aby mnie nakierować. A użytkownikom którzy nic nie wnoszą do tematu, śmieją się, czy chcą pokazać jacy to oni nie są zajebiście mądrzy podziękuje, i niech idą do innego tematu sie "prezentować" :) Dziękuje.

0

A niektórzy wiedzą, co to google :D

0

Jak z Ciebie taki dup**y programista, to napisz coś porządnego, a nie jakieś proste programy, przejrzałem pare twoich postów, większość z nich nic nie wnosi do tematu, albo zadajesz pytanie na początku i nie udzielasz na nie odpowiedzi.

Łap zaawansowany informatyku http://validator.w3.org/check?uri=http%3A%2F%2Ftoka-information.prv.pl%2F&charset=%28detect+automatically%29&doctype=Inline&group=0

0

No wybacz, ale czemu się dziwisz, skoro Twoje pytanie zadane było n razy i na forum można znaleźć n odpowiedzi. Nie mówiąc już o dziesiątkach kursów czy książek. Newbie nie zwalnia z używania wyszukiwarki i myślenia

1 użytkowników online, w tym zalogowanych: 0, gości: 1