Permalänk
Medlem

Tips på lite c++.

Tjenare

Var ett tag sedan jag verkligen satt mig ner och gjort något i c++.

Nu fick jag lite spel, och blev jättesugen på att göra något. Men då kommer vi till nästa problem. Vad?

Jag är väldigt tacksam för de svar jag får, bara så att ni vet det.

Jag kan grunderna, skulle vilja göra något där jag kan utnyttja pekare. Har aldrig riktigt förstått funktionen av dem, är det för att spara resurser? Ne, jag har inte riktigt fattat de där. Men jag skulle gärna vilja ha tips på lite projekt. Helst något användbart. Så kanske man skulle kunna testa wxWidgets efter sen. Och kanske tillochmed lära sig det med. Men detta hade jag tänkt skulle bli en konsoll-applikation till en början i alla fall.

Jag har en bok som heter C++ Biblen, jag finner den väldigt bra att slå i. Men den är lite för "tung" för att läsa rakt igenom bara.

Tack på förhand, Viktor.

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

No offense men om du inte kan pekare så kan du inte grunderna
Pekare är bland det viktigaste att lära sig i C (och C++). I java, python osv så använder man ju pekare utan att tänka på det, men i C så krävs det att man fattar vad man gör.

Rekommenderar att du kollar igenom lite mer guider inom C tills du känner att du har koll på pekare innan du börjar med nåt större.
C/C++ är inga bra nybörjarspråk, men om man ska börja med det så är vettig pekarhantering more or less ett måste.

Permalänk
Medlem

Sedan bör man undvika att använda sig av pekare där det går och istället använda sig av referenser.

Permalänk
Medlem

Jojo, men det hjälper ju inte att bara säja att jag inte kan det. Jag måste ju göra något åt det.
Om nu pekare ingår i grunderna så är det väl så att jag inte kan dom. Svårare än så tänker jag inte vara.

Men som jag skrev, jag behöver något som gör mig "tvungen" att lära mig det, jag vill göra något som gör att jag är tvungen att utnytja dem. Jag vet hur jag skriver pekare osv. Men jag har svårt att hitta ett användnings område för dem.

Förstår du/ni hur jag tänker? Annars får jag förklara mig bättre.

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

Ett tips kan vara att försöka implementera lite olika datastrukturer utan att använda arrays. Länkade listor, heaps, stacks, queues osv.
Då tvingas du direkt att lära dig pekare och lär dig mycket annat nyttigt samtidigt.

Permalänk

Ett ganska enkelt pekare-exempel.

skapa en sträng...
// Notera här att s är en pekare som pekar på första tecknet i strängen "123".
// Själva allokeringen av strängen sköts av kompilatorn.
char *s = "123";

skapa en till pekare och peka mot samma minnesposition som s...
char *temp = s;

vandra igenom s och öka alla tecken med 1...
while (*temp != 0)
{
// Öka värdet som temp pekar till.
(*temp)++;

// Öka temp med ett så den pekar mot efterföljande minnesblock.
temp++;

}

Notis: En vanlig char är 8 bitar. temp++ kommer alltså att öka minnesadressen med 1 byte. Hade det varit en int-pekare så hade ökningen automatiskt blivit större (4 byte eller 8 byte beroende på om man kompilerar 32 eller 64).

Testa att experimentera lite med detta exemplet (med olika variationer på det) och när du känner dig säker på vad en pekare är så kan du gå vidare till att göra en länkad lista.

Testa även med att skiva ut pekaren som hex och se hur de förändras efterhand som du arbetar med dem.

Lycka till.

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Deterministic

(*temp)++;

Nu är det kanske mindre pedagogiskt att försöka modifiera konstanta strängar..

Permalänk
Citat:

Ursprungligen inskrivet av Elgot
Nu är det kanske mindre pedagogiskt att försöka modifiera konstanta strängar..

Oj, tänkte jag inte på

Inte bra att försöka skriva ett exempel när man är trött

Men det är ganska enkelt att fixa till ändå. Lättast är kanske att byta till en int-array och sen leka med den istället.

Permalänk
Medlem

En IRC-bot

Permalänk
Medlem

En IRC-bot är ett bra program för att lära sig grunderna till nätverksprogrammering, men knappast grunderna för programmering in general

Permalänk
Medlem

Ett game of life är inte speciellt svårt att göra och om man har lite fantasi så kan man använda pekare både till höger och vänster... http://en.wikipedia.org/wiki/Conway's_Game_of_Life kan du läsa lite

btw, Deterministic du är så himla förutsägbar!

Permalänk
Citat:

Ursprungligen inskrivet av savje
btw, Deterministic du är så himla förutsägbar!

Förutsägbar? Jävligt trött skulle jag vilja säga

Försökte bara ge ett exempel som var så lätt så möjligt....som dessutom krävde väldigt lite tankeverksamhet från min sida.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Deterministic
Förutsägbar? Jävligt trött skulle jag vilja säga

Försökte bara ge ett exempel som var så lätt så möjligt....som dessutom krävde väldigt lite tankeverksamhet från min sida.

När du vaknat idag kommer du antagligen förstå min ordlek

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av savje
Ett game of life är inte speciellt svårt att göra och om man har lite fantasi så kan man använda pekare både till höger och vänster... http://en.wikipedia.org/wiki/Conway's_Game_of_Life kan du läsa lite

btw, Deterministic du är så himla förutsägbar!

Ett mycket bra exempel... fick göra det när jag läste grunderna i programmering
men den går att göra utan pekare och med text baserat bild

Visa signatur

...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Buffi
En IRC-bot är ett bra program för att lära sig grunderna till nätverksprogrammering, men knappast grunderna för programmering in general

Han skrev ju att han kunde grunderna i C++. Med en IRC-bot blir det inte alls mycket nätverksprogrammering förutom lite basic send/recv men däremot en jävla massa parsing vilket är bra övning för både logiken och C++ syntaxen

Permalänk
Medlem

IRC-Bot, låter faktiskt riktigt roligt. Men inte riktigt än. Började med ett litet program där jag testat pekare lite. Vet inte riktigt om jag fått det rätt.

Programmet jag skrivit ser ut såhär:

#include <iostream> #include <fstream> #include <stdio.h> #include <string> using namespace std; void SkrivIn(string *dag, int *tid, int *langd){ cout<<"Dag:"; cin>>*dag; cout<<"Tid:"; cin>>*tid; cout<<"Längd på pass:"; cin>>*langd; } void SkrivUt(string *dag, int *tid, int *langd){ cout<<"I "<<*dag<<"s tränade jag klockan "<<*tid<<" i "<<*langd<<" timmar"<<endl; } void SkrivTillFil(string *dag, int *tid, int *langd){ ifstream ifile("data.dat"); if(ifile.fail()){ ofstream tfile("data.dat"); cout<<"Det fanns ingen tidigare fil, skapar en ny"; } ofstream tfile("data.dat", ios::app); tfile <<"I"<<*dag<<"tränade jag kl"<<*tid<<" i "<<*langd<<" timmar"<<endl; } int main(){ cout << "Välkommen till Viktors Träningslogg"<<endl; string dag; int tid; int langd; SkrivIn(&dag, &tid, &langd); SkrivUt(&dag, &tid, &langd); SkrivTillFil(&dag, &tid, &langd); system("pause"); return 0; }

Det funkar bra.

Ska se om jag kan få det att funka att läsa från filen med.

Men det vore trevligt att veta ifall jag använder pekarna rätt?

Edit: Hur gör man för att bara skriva ut allt som står i filen jag har skapat?

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk

Gör en sudoku-lösare.

En snyggt implementerad sådan kan bli en övning både i objektorientering och pekarhantering (och såklart även sudokulösning!).