Az, hogy lehet, hogy ebben a programnak a kimenetelében szerepelhet két ugyanolyan szám?
// main.cpp
#include <iostream>
#include <cstring>
#include <stdlib.h>
#include <time.h>
using std::cout ;
using std::cin ;
using std::endl ;
using std::string ;
typedef unsigned short int ushort ;
typedef unsigned int uint ;
typedef unsigned long ulong ;
typedef unsigned long long ulong_ulong ;
class Ushort2 {
public:
Ushort2(void): i_value(rand() % 5 + 1), i_x(true) {}
~Ushort2(void) {}
void i_setValue(const ushort number) { this->i_value = number ; }
void i_setX(const bool x) { this->i_x = x ; }
bool i_getX(void)const { return this->i_x ; }
ushort i_getValue(void)const { return this->i_value ; }
protected:
private:
ushort i_value ;
bool i_x ;
};
int main(void) {
srand(time(0)) ;
const ushort maxNumber = 5 ;
Ushort2 numberArray[maxNumber] ;
for(ushort i = 0; i < maxNumber; ++i)
for(ushort j = 0; j < maxNumber; ++j)
if(i != j)
if(numberArray[i].i_getValue() == numberArray[j].i_getValue()) {
numberArray[i].i_setValue(rand() % 5 + 1) ;
--j ;
}
for(ushort i = 0; i < 5; ++i)
cout << numberArray[i].i_getValue() << endl ;
return 0 ;
}
Amikor az objektumoknak a változóiban levő érték változik mindig újat sorsolok az egyiknek egészen addig míg a két érték nem fog különbözni.
De mégsem működik úgy ahogy kellene.Miért?
Már tudom mi a baj.
Így már jó az tuti:
for(ushort i = 0; i < maxNumber; ++i)
for(ushort j = 0; j < maxNumber; ++j)
if(i != j)
if(numberArray[i].i_getValue() == numberArray[j].i_getValue()) {
numberArray[i].i_setValue(rand() % 5 + 1) ;
i = 0 ;
break ;
}
De hogy lehet ezt tökéletesíteni mert elég lassú kódnak tűnik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!