Permalänk
Medlem

Total C++-nybörjare

Hej, som rubriken lyder är jag nybörjare på C++ och all annan programmering. Jag följer just nu en engelsk guide och märker att min engelska är väldigt begränsad. 1. Var skriver man in koden? 2. Hur går man från kod till program? 3. Vad är en kompilator? Jag har och "försöker" använda mig av Microsoft Visual C++ 2010. Svar uppskattas

Sedan om någon kan rekommendera en svensk C++ guide på internet eller i bokform
Helst nåt där man lär sig genom praktisk utföring och slipper läsa några hundra sidor om dess historia om det inte är nödvändigt alltså.

Permalänk
Inaktiv

Kör du med Windows (och utvecklar Windows program) så "ska" du ju köra med Visual C++.
Då skriver du in koden direkt i Visual C++. När du vill testa det klickar du på den gröna pilen i verktygsfältet (F5) så skapas ett program som körs. En kompilator är det programmet som omvandlar din kod till program. Visual C++ för Windows, G++ för GNU/Linux till exempel.

Permalänk
Medlem

inte prövad denna guide själv men bara googlade lite Blinkenlights.se - C++ Nybörjarguide - Programmering & spelutveckling
i skolan kör vi med Dev c++ eller Code:blocks i linux fungera fin fint för oss allafall

Visa signatur

Maximus X Hero - 8700k @5.1GHz - H115i - 32GB LPX@3466MHz - MSI 980Ti Gaming - EVGA SuperNova 750 G2 - Asus vg248qe - FD R5

Permalänk
Medlem

Aha okey men vi säger att jag ska skriva in en kod nu. Kan nån förklara steg för steg? Ska jag välja New Project eller New File? Sedan finns det ju flera valmöjligheter därefter också.

Svar uppskattas Mvh Filatov

Permalänk
Medlem

Microsoft hade iallfall förut en video på sin sida där en tjej förklarade precis vad man skulle välja överallt i Visual studio. Kolla runt lite om du kan hitta det. Har tyvärr inte kvar länken.

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk
Medlem

New Project -> Visual c++ -> Win 32 Console Application
(Console applikation är ett bra ställe att börja på, inget grafiskt utan bara skriva ut text och ta emot text från användaren)
Skriv vad du vill i Name och Solution control

och sedan trycker du "ok" Bam! så har du skapat ditt första programmeringsprojekt.

Visa signatur

| CPU: Intel Core i5 3570K | Mobo: MSI Z77A-GD65 ATX | Ram: Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE | GFX: Gigabyte HD7970 OC 3GB | SSD: Corsair Force 3 120GB | HDD: Diverse Mekaniska 4TB | Chassi: Corsair 800D | PSU: Corsair AX 850W 80+ Gold Modulär | CPU Cooler: Corsair H50 |
Citera mig så hittar jag tillbaka hit :)

Permalänk
Medlem

Tack så mkt!

När jag trycker F5 så kör programmet men var hittar jag .exe filen?

Permalänk
Inaktiv

Default är Mina Dokument\Visual C++ 2010\Projects\PROJEKTNAMN\PROJEKTNAMN\bin\debug\
Om du ska skapade en release så hittar du den under \release\ istället.

Permalänk
Medlem

Tack jag hittade den

Jag följer nu istället guiden som är länkad i föregående kommentar fast jag har ett problem. När jag har skapat ett program och kör det så ser jag CMD fast den stängs ner direkt igen t ex.

#include<iostream>

using std::cout;
using std::cin;

int main()
{
int ett_tal;

cout << "Skriv in ett tal: ";
cin >> ett_tal;

ett_tal = ett_tal + 10;

cout << ett_tal;

return 0;
}

Så ska man skriva in ett tal och talet som programmet skriver ut är +10, ex jag skriver in 10 och trycker ENTER så ser jag svaret 20 men programmet stängs samtidigt ner. Vad gör jag för fel?

Permalänk
Medlem

skriv dit system("pause"); innan return 0; så kommer den vänta på att du tryckt på valfri tangent med att avslutas

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem

system("pause") funkade men då kommer det upp en ful text direkt efter och förstör mitt snygga program.
Finns det inget annat sätt? Som inte syns i programmet. Kanske bara någon fördröjning? För just nu så stängs CMD ner så snabbt att man knappt hinner se svaret.

Permalänk
Medlem

har för mig att man kan lägga "cin.get();" istället för "system("pause");" så väntar den på ett Enter...

Visa signatur

Burk Nr.1 : Asus P8Z68 V-Pro | i7 2600k @ 4,4 | EVGA GTX780 Classified | Corsair Vengeance 8GB DDR3 1600Mhz | Corsair Obsidian 650D | Corsair TX650M | Corsair H100

Burk Nr.2 : MSI P35 Neo2 | Core 2 Duo E6850 @ 3,2Ghz | Powercolor Radeon HD5850 1GB | Corsiar Twin2X 6400 2x2GB | Corsair 550W

Permalänk
Medlem

Funkar inte :/ Håller på med detta program:

#include<iostream>

using std::cout;
using std::cin;

int main()
{
int ett_tal;
int ett_tal_till;
int summa;

cout << "Skriv in ett tal\n";
cin >> ett_tal;
cout << "Skriv in ett tal till\n";
cin >> ett_tal_till;

summa = ett_tal + ett_tal_till;

cout << "Det blir\n";
cout << summa;

return 0;
}

När jag har skrivit in båda talen så trycker jag ENTER så hinner jag knappt se svaret innan CMD försvinner.

Permalänk

Ha kvar cin.get(); innan return 0; då?

Visa signatur

Anything that can go wrong will go wrong.

Permalänk
Medlem
Skrivet av Filatov:

Funkar inte :/ Håller på med detta program:

#include<iostream>

using std::cout;
using std::cin;

int main()
{
int ett_tal;
int ett_tal_till;
int summa;

cout << "Skriv in ett tal\n";
cin >> ett_tal;
cout << "Skriv in ett tal till\n";
cin >> ett_tal_till;

summa = ett_tal + ett_tal_till;

cout << "Det blir\n";
cout << summa;
cin.get();

return 0;
}

När jag har skrivit in båda talen så trycker jag ENTER så hinner jag knappt se svaret innan CMD försvinner.

Sådär tänkte jag!

Visa signatur

Burk Nr.1 : Asus P8Z68 V-Pro | i7 2600k @ 4,4 | EVGA GTX780 Classified | Corsair Vengeance 8GB DDR3 1600Mhz | Corsair Obsidian 650D | Corsair TX650M | Corsair H100

Burk Nr.2 : MSI P35 Neo2 | Core 2 Duo E6850 @ 3,2Ghz | Powercolor Radeon HD5850 1GB | Corsiar Twin2X 6400 2x2GB | Corsair 550W

Permalänk
Medlem

CMD fortsätter stänga ner direkt efter att man har knapprat in andra talet och tryckt ENTER, kan det ha med någon inställning att göra?

Permalänk

men starta ditt program från cmd från början. ett program ska inte hålla konsoller öppna om du inte var där från början.

1. kör->cmd
2. cd c:\Mina Dokument\Visual C++ 2010\Projects\PROJEKTNAMN\PROJEKTNAMN\bin\debug\
3. PROGRAMNAMN.exe

Visa signatur

i5 750, asrock p55 extreme, corsair 4 gb 1600 mhz, hd5850, spinpoint f3, chieftec 750 w modulärt, fd define r2, 2 x 22"
hp nc8430 - asus eeepc 901 - mediaserver 2.4 GHz

Permalänk
Inaktiv

Testa "getchar()".
Anledningen att det stängs är ju för att det inte finns mer att utföra.

Permalänk
Medlem

så här fick jag till de allafall

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int tal_ett, tal_tva, summa;
cout << "skriv ett tal tack! ";
cin >> tal_ett;
cout << "Skriv in ett tal till! ";
cin >> tal_tva;

summa = tal_ett + tal_tva;

cout << "det blir ";
cout << summa;
cout << "!" ;
cout << endl; // drog med en endl; för att slippa på texten att klicka på en tangent på samma rad

system("PAUSE");
return EXIT_SUCCESS;
}

Visa signatur

Maximus X Hero - 8700k @5.1GHz - H115i - 32GB LPX@3466MHz - MSI 980Ti Gaming - EVGA SuperNova 750 G2 - Asus vg248qe - FD R5

Permalänk

Annars gör så här.

under #include <iostream>
klistra dit #include <windows.h>

Sen kan du använda Sleep(tid); där tid är tiden där den ska vänta i ms.

VIKTIGT!!!
Du kan inte använda sleep(); utan det måste vara ett stort S.

Permalänk
Medlem
Skrivet av Filatov:

Funkar inte :/ Håller på med detta program:

#include<iostream>

using std::cout;
using std::cin;

int main()
{
int ett_tal;
int ett_tal_till;
int summa;

cout << "Skriv in ett tal\n";
cin >> ett_tal;
cout << "Skriv in ett tal till\n";
cin >> ett_tal_till;

summa = ett_tal + ett_tal_till;

cout << "Det blir\n";
cout << summa;

return 0;
}

När jag har skrivit in båda talen så trycker jag ENTER så hinner jag knappt se svaret innan CMD försvinner.

Som det står ovan i tidigare posteringar så kan du köra cin.get(); om du inte vill avända system("pause"); men det kan vara bra att lägga till cin.ignore(); t.ex

cout << "Skriv in ett tal\n";
cin >> ett_tal;
cout << "Skriv in ett tal till\n";
cin >> ett_tal_till;

cin.ignore();
cin.get();

Det var några år sedan man programmerade i c++ men anledningen till att du inte hinner se något är för att när man vill skriva in siffror med cin så lagras de i en buffer som man måste rensa med cin.ignore();
annars kan cin tro att du har tryckt igen även om man inte har det.
om jag nu inte missminner mig :D.

Permalänk
Medlem

Om det bara är "Press any key to continue" som är problemet med system("pause") så kan ju det fixas lätt med system("pause > NULL").

Permalänk
Medlem

Tack det funkade perfekt Men har ett problem till..... När jag väl har gjort ett program och har en .exe fil. När jag skickar den till en annan dator så funkar den inte, vad är problemet?

Felmeddelandet blir:

Systemfel - Det gick inte att starta programmet eftersom MSVCP100D.dll saknas på datorn.
Du kan försöka åtgärda problemet genom att installera om programmet.

Permalänk
Skrivet av Filatov:

Tack det funkade perfekt Men har ett problem till..... När jag väl har gjort ett program och har en .exe fil. När jag skickar den till en annan dator så funkar den inte, vad är problemet?

Du kompilerade i Visual Studio 2010 va?
Av någon anledning så hittar den inte någon fil. Jag har hört att det ska finnas någon inställning för att inkludera alla dem filerna, men jag har inte hittat den själv. :/
Dock har jag inte sökt så noga.

Permalänk
Medlem

Jag använder Visual Studio 2010, ja.

Permalänk
Skrivet av Filatov:

Jag använder Visual Studio 2010, ja.

Då är det det.
Jag löste det med att installera VS2010 på min laptop också.

Jag hittade nyss en fix som borde funka.

Skrivet av http://social.msdn.microsoft.com:

To build statically, Open the project properties,

C/C++
Code Generation
Runtime library
Multi Threaded /MT (Static)
Mult Threaded Debug /MTd (Static)
Multi Threaded DLL /MD
Multi Threaded Debug DLL /MDd

Alltså tryck ALT+F7.
"Configuration Properties" -> C/C++ -> -> Code Generation -> Runtime Library -> Välj /MT eller /MTd, beroende om du vill inkludera debuginformation i exe'n (tror jag)

Permalänk
Hedersmedlem
Skrivet av Filatov:

Tack det funkade perfekt Men har ett problem till..... När jag väl har gjort ett program och har en .exe fil. När jag skickar den till en annan dator så funkar den inte, vad är problemet?

Felmeddelandet blir:

Systemfel - Det gick inte att starta programmet eftersom MSVCP100D.dll saknas på datorn.
Du kan försöka åtgärda problemet genom att installera om programmet.

Kör den här: Download details: Microsoft Visual C++ 2010 Redistributable Package (x86)

Permalänk
Medlem
Skrivet av Sephinator:

Då är det det.
Jag löste det med att installera VS2010 på min laptop också.

Jag hittade nyss en fix som borde funka.

Alltså tryck ALT+F7.
"Configuration Properties" -> C/C++ -> -> Code Generation -> Runtime Library -> Välj /MT eller /MTd, beroende om du vill inkludera debuginformation i exe'n (tror jag)

Tack så mycket nu funkar det

Permalänk
Skrivet av Filatov:

Tack så mycket nu funkar det

Varsego!
Dock blir programmet lite större. Men det får man leva med!

Permalänk
Hedersmedlem
Skrivet av Sephinator:

Varsego!
Dock blir programmet lite större. Men det får man leva med!

Nej, det behöver man inte; installera paketet ovan.