-kga- Skrevet 6. januar 2006 Del Skrevet 6. januar 2006 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
teflonpanne Skrevet 6. januar 2006 Del Skrevet 6. januar 2006 hvorfor det ikke blir valgt 2 av samme kort? den fyller en array med 52 unike kort, så stokker den kortene og dermed deler ut en etter en.. når du løper gjennom arrayen fra 0 til 51 kan det ikke bli 2 like kort hvis alle er forskjellige Lenke til kommentar
Peter Skrevet 6. januar 2006 Del Skrevet 6. januar 2006 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
-kga- Skrevet 6. januar 2006 Del Skrevet 6. januar 2006 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. Lenke til kommentar
mortizz Skrevet 1. februar 2006 Del Skrevet 1. februar 2006 (endret) 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 1. februar 2006 av mortizz Lenke til kommentar
Peter Skrevet 1. februar 2006 Del Skrevet 1. februar 2006 (endret) Her er C++ måten: (eller en av dem) #include <iostream> #include <sstream> char* x = "123"; int y = 0; std::stringstream ss; ss << x; ss >> y; std::cout << ss.str() << std::endl; Endret 1. februar 2006 av Nazgul Lenke til kommentar
dayslepr Skrevet 2. februar 2006 Del Skrevet 2. februar 2006 ss.str() returnerer et objekt av typen std::string, sier du: ss.str().c_str() får du et objekt av typen char* Lenke til kommentar
mortizz Skrevet 3. februar 2006 Del Skrevet 3. februar 2006 yesyes, brukte itoa() som zirener sa i en annen tråd her. funker det =) Lenke til kommentar
Peter Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 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
charlie di meola Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 haha Nazgul stepper opp som c++ fascist propaganda mannen over alle, i Myubi's fravær lenge leve C!! </tongue-in-cheek> Lenke til kommentar
gamma48 Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 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
Peter Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 (endret) #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 4. februar 2006 av Nazgul Lenke til kommentar
gamma48 Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 (endret) 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 4. februar 2006 av gamma48 Lenke til kommentar
dayslepr Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 om det står sånn i boka er nok det en feil Lenke til kommentar
Dead_Rabbit Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 Husk også at i dette tilfellet er det nok å skrive: char Melding[] = "Hello, alle!"; Siden du gir 'Melding' en verdi med en gang, trenger du ikke å spesifisere størrelsen på arryet. Kompilatoren finner ut av dette selv. Lenke til kommentar
gamma48 Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 (endret) //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 4. februar 2006 av gamma48 Lenke til kommentar
Peter Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 (endret) 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 4. februar 2006 av Nazgul Lenke til kommentar
gamma48 Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 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: 10064 64 100 100 Lenke til kommentar
Peter Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 (endret) 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 4. februar 2006 av Nazgul Lenke til kommentar
dabear Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 Dette funka da: #include <iostream> int main (int arcg, char **argv) { int I = 0x64;// 64 (heksadesimalt) er lik 100 (desimalt) printf("Hex: %x, dec: %d", I, I); std::getchar (); return 0; } Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå