Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » gleiche zahlen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
05.12.2003, 19:57 Uhr
~punkisx
Gast


ich hab ein programm mit konsole gemacht (ein lottoprogramm) das sich aus 1 - 45 6 Zahlen aussucht diese zahlen sind aber manchmal gleich wie kann ich das machen das das nicht passiert?

hier mein Source-Text:

C++:
#include <iostream.h>
#include <conio.h>

void main ()

{  int wert[46], i;

   randomize();

   for(i=0; i<=5; i++)

   { wert[i]=rand() % 45 + 1;
     cout<<wert[i]<<endl;
   }

   getch();
}


bitte helft mir!

mfg


Bearbeitung von Pablo:

CPP TAGS gesetzt. BITTE SELBER BENUTZEN, DAS HABEN WIR 10000000000...0000 MAL GESAGT


Dieser Post wurde am 05.12.2003 um 20:03 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.12.2003, 20:06 Uhr
Pablo
Supertux
(Operator)


1. main ist int, nicht void

2. riecht nach Hausaufgaben, wir sind leider kein HA-Service.

3. Wir helfen dir gerne, aber du sollst in diesem Fall sagen, was du willst. Gibt uns deinen Ansatz, was du versucht hast, was du machen würdest, wir helfen dir die Lösung zu finden. Sag uns mal, was du schon versucht hast, um dein Problem zu lösen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.12.2003, 20:10 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hab dein proggie mal ein bisschen ausgebessert

C++:
#include<iostream>
#include<ctime>
#include<conio.h>

int main (){
int wert[6],i;

srand(time(NULL));
   for(i=0; i<6; i++){
     wert[i]=rand()%45 + 1;
     std::cout<<wert[i]<<std::endl;
   }

   getch();

return 0;
}


wenn ich dir auch noch programmier wie du das mit den doppelten zahlen löst würdest du ja nichts dazulernen.
du kannst z.b. eine schleife über das array laufen lassen und nachschauen ob die zahl schon enthalten ist. wenn ja wird einfach eine neue zufallszahl ermittelt
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.12.2003, 21:31 Uhr
~was ich versucht habt
Gast


tja ich hab ver sucht das ganze mit ner Zählschleife zu lösen:


C++:
#include <iostream.h>
#include <conio.h>

void main ()

{  int wert[46], i, Z;

   randomize();

   for(i=0; i<=5; i++)

   { wert[ i ]=rand() % 45 + 1;
     for(Z=0; Z=5; Z++)
     { if(wert[i]==wert[Z])
       wert[i]++
     cout<<wert[ i ]<<endl;
   }
}

   getch();
}


funzt aber nicht
wie kann ich auserdem das machen das der source in einem extra fenster is ??


Bearbeitung von Pablo:

Ich habe darum gebotten, selbst CPP tags zu benutzen


Dieser Post wurde am 05.12.2003 um 21:42 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.12.2003, 22:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


probier mal so

C++:
#include<iostream>
#include<ctime>
#include<conio.h>

bool is_number_in_array(int number,int *a,int n){
//das hier musst du implementieren die funktion muss false zurückliefern wenn die nummer "number" nicht in dem array "a" der grösse "n" enthalten ist, wenn sie enthalten ist soll true zurückgeliefert werden. Du musst also quasi nur eine schleife schreiben die die ersten n elemente des arrays a jeweils mit der nummer number vergleicht. wenn ein vergleich true liefert muss die funktion true zurückliefern ansonsten halt false
return rv;
}

int main (){
int wert[6],i,temp;

srand(time(NULL));

   for(i=0; i<6; i++){
      while(!is_number_in_array(wert[i]=rand()%49+1,wert,i+1)); //diese codezeile weist solange wert[i] einen neuen zufallswert zu bis die funktion is_number_in_array false zurückliefert
       std::cout<<wert[i]<<std::endl;
   }

   getch();

return 0;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 05.12.2003 um 22:59 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.12.2003, 23:09 Uhr
Pablo
Supertux
(Operator)


Du könntest auch folgendes tun. Erstelle ein pointer von int, und mit new int[46] initialisieren (nicht vergessen den Speicher mit delete [] freizugeben). Somit haben alle Elemente den Wert 0. 0 heißt "Zahl ist nicht gewählt worden" und 1 "Zahl ist schon dabei. Dann erzeuge die Zufallszahl i und untersuche array [ i ]. Wenn es 1 ist, dann hat sich die Zahl i wiederholt. Wenn array [ i ] 0 ist, dann tritt diese Zahl zum ersten Mal auf. Vorteil: Die Generierung der Zahlen läuft in linearer Zeit, O(n).

Das Array speichert welche Zahlen von den 46 gewählt wurden und gibst sie dann aus.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.12.2003, 23:11 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Pablo
Ich glaub der ist erstmal froh wenn das überhaupt läuft. danach kann er sich immer noch mit performance auseinandersetzen....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.12.2003, 23:17 Uhr
Pablo
Supertux
(Operator)


Da hast du allerdings Recht
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.12.2003, 23:41 Uhr
Pablo
Supertux
(Operator)



C++:
#include <iostream>
#include <ctime>

int main()
{
    int* lotto;
    srand(time(NULL));
    lotto = new int[49];
    if (lotto==NULL) {
        std::cerr << "Kein Speicher mehr!" << std::endl;
        return 1;
    }

    for(int i=0; i<6; ++i) {
        int tmp = rand()%49;
        while(lotto[tmp]==1) tmp=rand()%49;
        lotto[tmp]=1;
        std::cout << tmp+1 << ", ";
    }

    std::cout << "\b\b " << std::endl;

    delete [] lotto;
    return 0;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.12.2003, 07:06 Uhr
~punkisx
Gast


???

könntet ihr ddas auch so programmieren das ichs verstehe?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: