Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Satt med en oppgave her, og når jeg så på fasitten så så den slik ut:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//---------------------------------------------------------------------------

struct card{
       const char *face;
       const char *suit;
};
typedef struct card Card;

void fillDeck( Card * const wDeck, const char * wFace[], const char * wSuit[] );
void shuffle( Card * const wDeck );
void deal( Card * const wDeck );
int main()
{
       Card deck[ 52 ];

       const char *face[] = { "Ess", "To", "Tre", "Fire", "Fem", "Seks", "Syv", "Otte", "Ni", "Ti", "Knekt", "Dame", "Konge" };

       const char *suit[] = { "Hjerter", "Ruter", "Klover", "Spar" };


       srand( time( NULL ) );

       fillDeck( deck, face, suit );
       shuffle( deck );
       deal( deck );

       getchar();getchar();
       return 0;
}
//---------------------------------------------------------------------------

       /* place strings into Card structures */
       void fillDeck( Card * const wDeck, const char * wFace[], const char * wSuit[] )
       {
               int i;

               for ( i = 0; i < 52; i++ ) {
                       wDeck[ i ].face = wFace[ i % 13 ];
                       wDeck[ i ].suit = wSuit[ i / 13 ];
               }
       }

       /* suffle cards */
       void shuffle( Card * const wDeck )
       {
               int i, j;
               Card temp;

               for ( i = 0; i < 52; i++ ) {
                       j = rand() % 52;
                       temp = wDeck[ i ];
                       wDeck[ i ] = wDeck[ j ];
                       wDeck[ j ] = temp;
               }
       }

       /* deal cards */
       void deal( Card * const wDeck )
       {
               int i;

               for ( i = 0; i < 52; i++ ) {
                       printf( "%5s of %-8s%c", wDeck[ i ].face, wDeck[ i ].suit, ( i+ 1 ) % 3 ? '\t' : '\n' );
               }
       }

 

Jeg lurte på hva det er som gjør atte det ikke blir delt ut flere av samme kort. Feks: 2x hjerter 8.

 

 

Trur det ligger her, men hvet ikke hvorfor det skjer... kan noen forklare meg?

/* place strings into Card structures */
       void fillDeck( Card * const wDeck, const char * wFace[], const char * wSuit[] )
       {
               int i;

               for ( i = 0; i < 52; i++ ) {
                       wDeck[ i ].face = wFace[ i % 13 ];
                       wDeck[ i ].suit = wSuit[ i / 13 ];
               }
       }

Lenke til kommentar
Videoannonse
Annonse

Kjør denne, så ser du nok lyset :)

 

#include <iostream>

int main() {
 for(int i = 0;i<52;i++) {
   std::cout << i << " % 13 = " << (i % 13) << std::endl;
   std::cout << i << " / 13 = " << (i / 13) << std::endl << std::endl;
   if(i % 13 == 0) std::cin.get();
 }
 return 0;
}

 

Den if-setningen der er bare så du skal ha en mulighet til å se hva som skjer, bare trykk enter hver gang programmet stopper.

Lenke til kommentar
Kjør denne, så ser du nok lyset :)

 

#include <iostream>

int main() {
 for(int i = 0;i<52;i++) {
   std::cout << i << " % 13 = " << (i % 13) << std::endl;
   std::cout << i << " / 13 = " << (i / 13) << std::endl << std::endl;
   if(i % 13 == 0) std::cin.get();
 }
 return 0;
}

 

Den if-setningen der er bare så du skal ha en mulighet til å se hva som skjer, bare trykk enter hver gang programmet stopper.

5394414[/snapback]

 

 

Takker og bukker... det fikk meg til og se lysett ja. Var vel den '%' jeg var usikker på hva gjorde for noe. :w00t:

Lenke til kommentar
  • 4 uker senere...

skal overloade fra int til char*.

har prøvd (char*)&int_variabel; men char*en blir det tegnet int_variabel er asciiverdien til.

 

andre metoder, anyone?

 

 

altså: jeg ønsker at hvis int_variabel er 75, skal char*en bli "75" ikke '>' elns

Endret av mortizz
Lenke til kommentar

Ikke det at jeg egentlig bryr meg om hva andre gjør, men personlig er jeg relativt purist på C++ området, som vil si at jeg prøver å bruke STL og C++ så mye som mulig, uten å mikse C inn i bildet. Dette er selvsagt umulig å oppnå fullstending, men det gjør som regel koden din penere og mer "riktig".

Det viktigste er ihvertfall at du vet selv når du bruker C-funksjoner direkte, og når du bruker C++.

itoa() fungerer altså helt fint, men er C- og ikke C++-måten å gjøre det på.

Lenke til kommentar

Hei!

Eg har nettopp begynt med C++ og lasta ned Dev-C++ frå Bloodshed.

Eg får ikkje denne koden til å virke.

Det ser ikkje ut som det går ann å bruke cout. Kan nokon forklare korleis eg får den til å finne kompilatordirektivet <iostream.h> ?

Eg trenger hjelp. :(

 

 

#include <iostream.h>
#include <stdio.h>

int main (int argc, char **argv)
{
cout << "Hei på deg!";
getchar (); 
return 0;
}

 

Eg har også prøvd å fjerne .h bak iostream.

HJELP!

Lenke til kommentar

#include <iostream>

int main (int argc, char **argv)
{
std::cout << "Hei på deg!";
std::cin.get();
return 0;
}

 

Må huske at standardbiblioteket er definert i namespacet std

 

stdio.h er fyfy, enten bruker du <cstdio>, eller så bruker du det foretrukne <iostream>

Endret av Nazgul
Lenke til kommentar

Tusen takk, men eg måtte beholde getchar () og ikkje get () for at det skulle virke.

Men finnes det andre måter å få vinduet til å ikkje lukke seg enn:

 

#include <stdio.h>

int main(int argc, char **argv)
{
 printf ("Press ENTER to continue.\n");
 getchar (); /* wait for input */
 return 0;
} 

 

og

 

#include <stdlib.h>

int main(int argc, char **argv)
{
 system ("pause"); /* execute M$-DOS' pause command */
 return0;
} 

 

?

 

Trenger meir hjelp folkens.

Korleis skal eg få til denne:

 

//SKJERM6.CPP, MED STRENGVARIABEL
#include <iostream>
int main (int arcg, char **argv)
{
   Melding[15] = "Hallo alle!";
   std::cout << "Strengverdien er: " << Melding;
   std::getchar ();
   return 0;
}

 

Den går viss eg skriver:

 

//SKJERM6.CPP, MED STRENGVARIABEL

#include <iostream>

int main (int arcg, char **argv)

{

char Melding[15] = "Hallo alle!";

std::cout << "Strengverdien er: " << Melding;

std::getchar ();

return 0;

}

Men i boka eg brukar står det at man ikkje skal skrive [b]char[/b] Melding [15].

Endret av gamma48
Lenke til kommentar

//SKJERM6.CPP, MED STRENGVARIABEL
#include <iostream>
int main (int arcg, char **argv)
{
   char Melding[15] = "Hallo alle!";
   std::cout << "Strengverdien er: " << Melding;
   std::getchar ();
   return 0;
}

 

Åssen får eg denne koden til å skrive "Helle alle!" med å bruke noko slikt i tillegg:

Melding[1] = 'e';
Melding[4] = Melding [1];
std::cout << Melding;

Endret av gamma48
Lenke til kommentar

Leser du i det hele tatt det som står i boken?

#include <iostream>

int main() {
   char melding[] = "Halla balla!";
   std::cout << "Strengeverdien er : " << melding << std::endl;
   melding[1] = 'e';
   melding[4] = melding[1];
   std::cout << "Strengeverdien er : " << melding << std::endl;
   std::cin.get();
   return 0;
}

Endret av Nazgul
Lenke til kommentar

Ja.

 

Kan nokon hjelpe meg med denne koden da?

 

#include <iostream>
int main (int arcg, char **argv)
{
   int I = 0x64;// 64 (heksadesimalt) er lik 100 (desimalt)
   std::cout << I << '\n' << hex << I << " " << I << '\n'
   << dec << I << " " << I << '\n';
std::getchar ();
return 0;
}

 

Den skal gi noko slikt:

 

100

64  64

100  100

Lenke til kommentar

Virker som at boken din (som virker ganske elendig når du må spørre hele tiden), har lagt opp til at du skal bruke "using namespace std;" i koden din:

#include <iostream>
#include <iomanip>

using namespace std;

int main (int arcg, char **argv)
{
  int I = 0x64;// 64 (heksadesimalt) er lik 100 (desimalt)
  cout << I << '\n' << hex << I << " " << I << '\n'
  << dec << I << " " << I << '\n';
cin.get ();
return 0;
}

Endret av Nazgul
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...