Premiär! Fyndchans i SweClockers Månadens Drop

Nybörjare på programmering A c++?

Permalänk
Medlem

Nybörjare på programmering A c++?

Har precis börjat med Programmering A c++ på distans.
Har köpt en bok som ska vara bra men jag förstår inte alls.
Det var svårare än jag trodde :/.
Första uppgiften så ska man skapa ett program med tre olika variablar (int, char [n] samt double. Programet som man skapar ska efterfråga inmatningar från användaren. Först ett heltal, sedan en sträng och ska sedan skriva ut värdet på dessa.
Ser massa exempel i boken. Men varje gång jag skriver in ngt exempel så fungerar det inte?
Såhär långt har jag kommit just nu.

// cin

#include <iostream>
Using Namespace std;

int main()
{
int tal1;
cout << "Mata in ett heltal: ";
cin >> tal1;

return 0;
}

Jag är som sagt väldigt okunnig på detta område.
Ni som kan er sak när det gäller c++ kan ni försöka förklara hur jag ska bära mig åt för att få in char samt double?

MVH

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Första uppgiften så ska man skapa ett program med tre olika variablar (int, char [n] samt double. Programet som man skapar ska efterfråga inmatningar från användaren. Först ett heltal, sedan en sträng och ska sedan skriva ut värdet på dessa.
Ser massa exempel i boken. Men varje gång jag skriver in ngt exempel så fungerar det inte?

Det behövs mer information, vad vill du ska hända men vad händer istället och så vidare?

Jag antar att det inte kompilerar, p.g.a. följande:

Using Namespace std;

Om du byter ut det mot

using namespace std;

så kompilerar programmet iallafall. Fast det borde kompilatorn redan sagt till dig genom att ge dig några felmeddelande. Testa att kompilera igen innan du byter ut den raden och se om du inte kan hitta några sådana.

Eller menar du att det inte händer något när du ska mata in data till tal1?

Citat:

Ursprungligen inskrivet av fammo
Ni som kan er sak när det gäller c++ kan ni försöka förklara hur jag ska bära mig åt för att få in char samt double?

På samma sätt, iochmed s.k. överlagring (borde gå att hitta det ordet i din bok någonstans).

Permalänk
Medlem

Vilket program rekommenderar du?
Läraren sa att Microsoft Visual C++ 6.0 är bra.
Men det hänger sig hela tiden :/.
Kanske är för att jag kör windows 7?

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Vilket program rekommenderar du?
Läraren sa att Microsoft Visual C++ 6.0 är bra.
Men det hänger sig hela tiden :/.
Kanske är för att jag kör windows 7?

Använd http://www.microsoft.com/express/Downloads/#2008-Visual-CPP
Bästa C++ kompilatorn enligt mig.

Dock har jag inte programmerat på länge och kan ej kompilera kod då jag är i skolan. Så ser inget fel förutom det cic sade.

Ett TIPS:
Enligt mig lär jag mig bäst på Internet via "filmer", så sök på typ "c++ video tutorial" på google

Permalänk
Medlem

Ett tips om du inte gillar det kan vara att kolla upp Dev-c++ det har jag alltid använt för c++ programmering och är överlag nöjd med det
http://www.bloodshed.net/devcpp.html

Visa signatur

Jag gillar datorspel!

Permalänk
Medlem

Tänk på att c++ är shiftlägeskänsligt!
Det gäller nog en majoritet av alla programmeringsspråk samtidigt som det alltid hjälper att hålla sig till att skriva på Ett sätt.

Alltså "Using" är inte samma som "using", "uSING" eller "usinG", det var det problemet jag hade i början när jag började programmera samt när jag byter språk (inte för att jag gjort det mer än någon gång men ändå). Alltså man skriver småfel som man måste leta upp hela tiden, det är något man vänjer av sig med tiden.

Ett tips är att lägga in lite radbrytningar ("\n" eller endl när du "coutar"), så blir det lite mer överskådligt om programmet inte ger dig det resultat du förväntar dig.

Men du ska göra en variabel av int, en av char[n] och en av double. Om det inte står något specifikt om att char[n] ska vara skalbar så tror jag tanken är att du börjar med att skapa dessa variablar typ:

//[...] const int n = 50; int main(){ int intVar; double doubleVar; char charVar[n]; //[...]

Jag tror inte tanken är något mer avancerat. Din kod är nästan klar ju!
En fördel med att ha en konstant för "n" är att du kan använda bokstaven i stället för siffror genom koden, så behöver du bara ändra siffror på ett ställe om du nu vill ha mer eller mindre utrymme!

Edit;
Sista stycket, const int n samt ändrade char charVar; till char charVar[n];.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av hoan
Ett tips om du inte gillar det kan vara att kolla upp Dev-c++ det har jag alltid använt för c++ programmering och är överlag nöjd med det
http://www.bloodshed.net/devcpp.html

Vad jag minns av min tidiga programmerings tid (då jag använde DEV-C++, ca 5-10 år sedan) var att det var mycket krångligare felmedelanden och mycket annat som krånglade. Dock när jag gick över till Visual Studio, då jag gick Programmering A o B på gymnasiet. Vilket kan ha gett mig lite bättre förståelse

Permalänk
Medlem

Ska genast testa microsoft visual c++ 2008. Måste in med uppgifterna snarast möjligast. Ligger efter som attans :/. Första gången jag ligger efter med uppgifter.
Får kolla ngn tutorial som Raxox skrev. Kanske blir lite klokare då

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Ska genast testa microsoft visual c++ 2008. Måste in med uppgifterna snarast möjligast. Ligger efter som attans :/. Första gången jag ligger efter med uppgifter.
Får kolla ngn tutorial som Raxox skrev. Kanske blir lite klokare då

På länken nedan verkar det finnas en hel del c++ video guider. Har varken kollat igenom dem men de verkar gå igenom allt från grunden vilket är mycket viktigt enligt mig.
http://www.intelligentedu.com/blogs/post/best_new_training_si...

Permalänk
Medlem

Någon som kan se vad felet är på denna jag nyss "lyckats" med.
Det är ngt skumt fel..

#include<iostream>
using namespace std;

int main()
{
int tal1;
cout << "Mata in ett heltal: ";
cin >> tal1;
double tal2;
cout << "Mata in ett decimaltal: ";
cin >> tal2;
char tecken;
cout << "Mata in en bokstav: ";
cin >> tecken;
cout << "Vanlig division : " << tal1/tal2 << endl;
cout << "Typomvandla division: "
<<tal1/(int)tal2 << endl;
cout << tecken << " har ASCII-koden "
<< (int)tecken << endl;
return 0;

Får detta fel : fatal error C1075: end of file found before the left brace '{'

Fick fler tidigare men hittade lösningen till dem felen

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

main funktionen börjar med {, alltså måste du sluta den med }. Sätt en } efter return 0;!!!

Permalänk
Medlem

Visual studio express är jätte bra och gratis men saknar vissa programbibliotek och annat som ofta används i många nybörjare böcker. Men det finns en massa bra övningar på deras egna hemsida som man kan göra i stället.

Visual studio 2008 fungerar fint i Windows 7
Visual studio 2010 beta finns att test gratis men inget jag har testat

Permalänk
Medlem

Hehe oj vilken miss jag gjorde xD. Jo läraren skrev att man inte kan följa bokens uppgifter så bra med de programmet men ska nog gå bra iaf

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

tips, använd [.code.][./code.] taggen fast utan punkter så ser vi din indentering, och har du inte indenterat så gör det, då är det lättare att se klammermissar
exempel

int main() { if (1 == 1) { cout << "Hello World"; } return 0; }

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

Sista uppgiften nu.
Jag ska alltså göra ett program som ger förslag på olika färdsätt beroende på resans längd.
Om man ska mindre än 3km ska det föreslå promenad, mellan 3 och 8km cykel och längre än 8km buss eller bil.
Denna biten "if (längd > 3 && 8);" har jag problem med.
Kollar i boken men det är ngt galet.
Fungerar om man tar bort så det ser ut såhär "if (längd > 3);"
Men skriver jag tex 56km så förslår den cykel,bil eller buss?
Cykel ska inte alls vara med.
Vad gör jag för fel?

#include<iostream>
using namespace std;
int main()
{
double längd;
cout << " Hur lång ska du färdas? ";
cin >> längd;
if (längd > 3 && 8);
cout << "Ta cykel";
else
cout << "Ta en promenad";
if (längd > 8)
cout << "Ta buss eller bil";
return 0;

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fammo
Sista uppgiften nu.
[...]

Jag ger det ett försök, någon får rätta mig om jag har fel.

if utvärderar uttryck till sant eller falskt, i vilken ordning den utvärderar uttrycken beror lite på "operator precedence" (läs ex. http://www.cppreference.com/wiki/operator_precedence) .
Ditt uttryck:
if(längd > 3 && 8)
Blir med lite parenteser;
if( (längd > 3) && 8 )
Eller i talspråk;
Är längd större än tre? Om ja, är 8? Om nej, falskt.
Något sådant. Jag har för mig att alla tal som inte är 0 utvärderas till sant.
Blir if(0) falskt?

I vilket fall, det du vill göra är;
if( (längd > 3) && (längd < 8) )

Med hjälp av "operator precedence" behöver du inte använda parenteser men jag tycker det blir tydligare med.

Edit;
Som tidigare nämnts; Använd inte svenska bokstäverna åäöÅÄÖ i variabelnamn, det blir bara jobbigt i längden!

Edit*; Ett litet '"' behövdes högst upp!

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Det enda som är nu är att promenad kommer istället får cykel som kom tidigare.
Ngt måste skrivas om på else biten men vet inte vad :/

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pscs3
Något sådant. Jag har för mig att alla tal som inte är 0 utvärderas till sant.
Blir if(0) falskt?

Om det var en fråga så väljer jag att svara "ja" på den:

Citat:

An rvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to an rvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true.
-- conv.bool från senaste draften

Det är hursomhelst ett semikolon för mycket i if-satsen också (i orginalkoden). Tycker att kompilatorn borde sagt det och vägrat att kompilera eftersom att det finns en else utan if-del, vilket inte fungerar. Vad är det för kompilator du använder fammo? Så glömde du [code]-taggarna igen.

Redigering: efter att ha läst igenom koden en gång så ser jag även ett logiskt fel i den som gör att det inte kommer fungera korrekt, det borde inte vara så svårt att hitta.

Permalänk
Medlem

Om du Enbart ändrade den delen jag påpekade så kommer den antagligen skriva ut;
"Ta en promenadTa buss eller bil" om du har en längd längre än 8.
8 verkar dessutom vara ett "magiskt tal" där du tar en promenad.

Pröva att skriva if/else-satser i ordningen:
Kortare än 3 km,
Längre än 3 km men kortare än 8 km,
Längre än 8 km.
Var du lägger in talen 3 och 8 får du välja själv. Det blir antagligen lite lättare att följa med i koden om du tar det i den ordningen.

Läs "Control Structures", "Functions (I)" och "Functions (II)" här;
http://www.cplusplus.com/doc/tutorial/

Det är viktigt att du förstår basen annars kommer du få ännu större problem senare.

Edit; glömde "senare."

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av cic
Om det var en fråga så väljer jag att svara "ja" på den:

Jo, precis! Tackar!
Citatet, är det från någon form av specifikation som finns tillgänglig? Skulle vara trevligt att ha tillhanda och lära sig kika i!

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pscs3
Citatet, är det från någon form av specifikation som finns tillgänglig? Skulle vara trevligt att ha tillhanda och lära sig kika i!

Det är C++0x-draften som sagt, finns tillgänlig för alla ("current draft"-länken) så länge det är en draft verkar det som. När den är klar kommer den kosta massor pengar som nuvarande C++-specifikation gör, antar jag.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av cic
Det är C++0x-draften som sagt, finns tillgänlig för alla ("current draft"-länken) så länge det är en draft verkar det som. När den är klar kommer den kosta massor pengar som nuvarande C++-specifikation gör, antar jag.

Ah, tack igen!
Den kommer bli användbar i framtiden då det var väldigt rakt på sak i den!

Fast sidan heter "open-std" så jag får det inte att gå ihop med att ISO.org senare tar betalt för standarden. Fast samtidigt antar jag att kunskapen som krävs för att utveckla standarden kostar mucho, samtidigt som iso.org verkar vara privat.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Gör lite olika tester mest för att lära mig mkt utav c++.
Jag vill att programmet ska återgå till menyn när man har kollat tex 1. Insättning.
Vad är det man ska använda sig uttav då?

#include <iostream>
using namespace std;

int main()
{
double behallning = 1000;
double insatt, uttag;
char val;
cout << "MENY\n";
cout << "1. Insattning\n";
cout << "2. Uttag\n";
cout << "3. Visa behallning\n";
cout << "4. Exit\n";
cin >> val;
switch (val){
case '1':
cout << "Ange insättningens storlek: ";
cin >> insatt;
behallning += insatt;
break;
case '2':
cout << "Ange uttagets storlek: ";
cin >> uttag;
if (uttag > behallning){
cout << "För stort uttag! ";
uttag = 0;
}
behallning -= uttag;
break;
case '3':
break;
default:
cout << "Felinmatning\n";
}
cout << "Du har " << behallning << " pa kontot.";
return 0;
}

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Hedersmedlem

Någon form av loop, till exempel:

int main() { double behallning = 1000; double insatt, uttag; char val; do { cout << "MENY\n"; cout << "1. Insattning\n"; cout << "2. Uttag\n"; cout << "3. Visa behallning\n"; cout << "4. Exit\n"; cin >> val; switch (val) { case '1': cout << "Ange insättningens storlek: "; cin >> insatt; behallning += insatt; break; case '2': cout << "Ange uttagets storlek: "; cin >> uttag; if (uttag > behallning){ cout << "För stort uttag! "; uttag = 0; } behallning -= uttag; break; case '3': break; default: cout << "Felinmatning\n"; } cout << "Du har " << behallning << " pa kontot."; } while(val != '4'); return 0; }

Permalänk
Medlem

Nu ska jag göra ett prog som ska låta användaren skriva in sitt namn för och efternamn. Hela det inmatade namnet ska lagras i en enda char variabel.
Sen anropas en funktion som skriver ut namnet med efternamnet först.
Förutom variablen så ska du endast variablar av int typ.

Jag fattar inte ett skvatt vad jag ska göra här :S

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

En char låter lite väl hårt, till och med omöjligt
Du ska nog använda en array av chars.

char name[MAX_NAME_LENGTH];

där MAX_NAME_LENGTH är antal tecken i det längsta namn du kan tänka dig läsa in. Kom ihåg att räkna med 0-termineringen också.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Har frågat läraren nu också. Och han skriver följande :

Skriv in för och efternamn i en enda charvariabel, ex char namn[30]; Ta sedan reda på hur många tecken som är inskrivna i namn, ex
int laengd=strlen(namn); strlen finns i biblioteket string.h Man måste även ta reda på vart mellanslaget finns. Detta görs lättast med en while-loop, ex
int mellanslag=0;
while(namn[mellanslag]!=' ')
räkna upp mellanslag

När man har denna information kan man konstruera två loopar som skriver ut efternamnet respektive förnamnet. Exempelvis börjar efternamnet på mellanslag och slutar på laengd. I loopen skrivs ett tecken ut för varje varv, ex cout<<namn[i];.

Jag förstår inte riktigt hur jag ska börja med den :S

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Du har fått i princip all information du behöver.
Börja först med att skriva ett program som läser in och skriver ut text, så du förstår hur det går till. Du bör väl ha en referens för det i din kursbok eller annat liknande.

EDIT: lite svårt att veta exakt hur det bör vara. Ni ser ut att blanda C och C++ rätt friskt. Använder ni cin och cout? I så fall ska du använda cin.getline(dst, MAX_NAME_LENGTH); för att läsa in MAX_NAME_LENGTH-1 tecken. Du bör inte inkludera string.h i ett C++-program. #include <cstring> bör det vara istället.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Jodå det är cin samt cout vi använder oss utav!

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::

Permalänk
Medlem

Någon som kan hjälpa mig lite.
Ska göra ett prog som man ska skriva in förnamn samt efternamn.
Men utskriften ska skriva ut allt baklänges tex Per Persson ska skrivas ut: nossreP reP.

Koden ser ut på följande just nu:

#include <iostream>
using namespace std;

int main()
{
cout << "Vad heter du? (fornamn och efternamn tack)";
char namn [20];
cin.getline(namn, 20);
cout << "Hej, ditt namn är " << namn;

return 0;
}

Jag vet att jag ska använda mig utav "laengd=strlen(namn);" samt göra någon loop.
Men jag vet inte vart de ska skrivas in :/.
Ngn som tror sig kunna hjälpa?

Visa signatur

::NZXT H440::OCZ 850w Gold::Gigabyte Z97X-Gaming 5::
::Intel 4690k::Cooler Master Hyper 212 EVO::
::Crucial 8GB (2x4GB) 1600Mhz Ballistix Sport::MSI GTX 980ti gaming::
::Xbox One 500gb::
::Microsoft Surface 2 32gb::