Jump to content

  • Log In with Google      Sign In   
  • Create Account


#Actualfastcall22

Posted 16 November 2012 - 12:03 PM

input should be a list of numbers from 1 to 9 generated randomly that can repeat
output should be a list of numbers from 1 to 9 that do not repeat
input: 1,3,4,2,1,5,5,9,8
output: 3,1,4,2,5,9,8

If this is the case Phil, then you need to be generating a random set of integers from 1 to 9, not a sequence of integers from 1 to 9:
    // v is always:  1 2 3 4 5 6 7 8 9      (no duplicates, ever)
    for(int i=1;i<10;i++)
        v.push_back(i);
    random_shuffle(v.begin(),v.end());   // (elements might be in a random order, but there still aren't any duplicates)

    // v could be:  9 1 8 6 7 4 6 3 2 
    for(int i=1;i<10;i++)
        v.push_back( rand()%9 + 1 );     // (may have duplicates)
(See the reference on rand. rand() returns an integer between 0 and RAND_MAX -- usually 32767 -- and the modulus wraps that around the range between 0 and 8, and adding one brings it between 1 and 9.)

Then, you'll need to include algorithm, such that you can use sort to move duplicates together, then use unique to move the duplicate values to the back. Once the unique values are in front, you can remove the duplicates from v by using the iterator returned by unique:
    sort( v.begin(), v.end() );
    v.erase( unique(v.begin(),v.end()), v.end() );

Edit:
Hurr durr, I read can documentation good.

#5fastcall22

Posted 16 November 2012 - 11:51 AM

input should be a list of numbers from 1 to 9 generated randomly that can repeat
output should be a list of numbers from 1 to 9 that do not repeat
input: 1,3,4,2,1,5,5,9,8
output: 3,1,4,2,5,9,8

If this is the case Phil, then you need to be generating a random set of integers from 1 to 9, not a sequence of integers from 1 to 9:
    // v is always:  1 2 3 4 5 6 7 8 9      (no duplicates, ever)
    for(int i=1;i<10;i++)
        v.push_back(i);
    random_shuffle(v.begin(),v.end());   // (elements might be in a random order, but there still aren't any duplicates)

    // v could be:  9 1 8 6 7 4 6 3 2 
    for(int i=1;i<10;i++)
        v.push_back( rand()%9 + 1 );     // (may have duplicates)
(See the reference on rand. rand() returns an integer between 0 and RAND_MAX -- usually 32767 -- and the modulus wraps that around the range between 0 and 8, and adding one brings it between 1 and 9.)

Then, you'll need to include algorithm, such that you can use sort to move duplicates together, then use unique to move the duplicate values to the back. Once the unique values are in front, you can remove the duplicates from v by using the iterator returned by unique:
    sort( v.begin(), v.end() );
    v.erase( unique(v.begin(),v.end()), v.end() );

#4fastcall22

Posted 16 November 2012 - 11:51 AM

input should be a list of numbers from 1 to 9 generated randomly that can repeat
output should be a list of numbers from 1 to 9 that do not repeat
input: 1,3,4,2,1,5,5,9,8
output: 3,1,4,2,5,9,8

If this is the case Phil, then you need to be generating a random set of integers from 1 to 9, not a sequence of integers from 1 to 9:
    // v is always:  1 2 3 4 5 6 7 8 9      (no duplicates, ever)
    for(int i=1;i<10;i++)
        v.push_back(i);
    random_shuffle(v.begin(),v.end());   // (elements might be in a random order, but there still aren't any duplicates)

    // v could be:  9 1 8 6 7 4 6 3 2 
    for(int i=1;i<10;i++)
        v.push_back( rand()%9 + 1 );     // (may have duplicates)
(See the reference on rand. rand() returns an integer between 0 and RAND_MAX -- usually 32767 -- and the modulus wraps that around the range between 0 and 8, and adding one brings it between 1 and 9.)

Then, you'll need to include algorithm, such that you can use sort to move duplicates together, then use unique to move the duplicate values to the back. Once the unique values are in front, you can remove the duplicates from v by using the iterator returned by unique:
    v.erase( unique(v.begin(),v.end()), v.end() );

#3fastcall22

Posted 15 November 2012 - 07:59 PM

input should be a list of numbers from 1 to 9 generated randomly that can repeat
output should be a list of numbers from 1 to 9 that do not repeat
input: 1,3,4,2,1,5,5,9,8
output: 3,1,4,2,5,9,8

If this is the case Phil, then you need to be generating a random set of integers from 1 to 9, not a sequence of integers from 1 to 9:
    // v is always:  1 2 3 4 5 6 7 8 9      (no duplicates, ever)
    for(int i=1;i<10;i++)
        v.push_back(i);
    random_shuffle(v.begin(),v.end());   // (elements might be in a random order, but there still aren't any duplicates)

    // v could be:  9 1 8 6 7 4 6 3 2 
    for(int i=1;i<10;i++)
        v.push_back( rand()%9 + 1 );     // (may have duplicates)
(See the reference on rand. rand() returns an integer between 0 and RAND_MAX -- usually 32767 -- and the modulus wraps that around the range between 0 and 8, and adding one brings it between 1 and 9.)

Then, you'll need to include algorithm, such that you can use unique to move the unique values of v to the front. Once the unique values are in front, you can remove the duplicates from v by using the iterator returned by unique:
    v.erase( unique(v.begin(),v.end()), v.end() );

#2fastcall22

Posted 15 November 2012 - 07:57 PM

input should be a list of numbers from 1 to 9 generated randomly that can repeat
output should be a list of numbers from 1 to 9 that do not repeat
input: 1,3,4,2,1,5,5,9,8
output: 3,1,4,2,5,9,8

If this is the case Phil, then you need to be generating a random set of integers from 1 to 9, not a sequence of integers from 1 to 9:
    // v is always:  1 2 3 4 5 6 7 8 9
    for(int i=1;i<10;i++)
        v.push_back(i);

    // v could be:  9 1 8 6 7 4 6 3 2 
    for(int i=1;i<10;i++)
        v.push_back( rand()%9 + 1 );
(See the reference on rand. rand() returns an integer between 0 and RAND_MAX -- usually 32767 -- and the modulus wraps that around the range between 0 and 8, and adding one brings it between 1 and 9.)

Then, you'll need to include algorithm, such that you can use unique to move the unique values of v to the front. Once the unique values are in front, you can remove the duplicates from v by using the iterator returned by unique:
    v.erase( unique(v.begin(),v.end()), v.end() );

#1fastcall22

Posted 15 November 2012 - 07:55 PM

input should be a list of numbers from 1 to 9 generated randomly that can repeat
output should be a list of numbers from 1 to 9 that do not repeat
input: 1,3,4,2,1,5,5,9,8
output: 3,1,4,2,5,9,8

If this is the case Phil, then you need to be generating a random set of integers from 1 to 9, not a sequence of integers from 1 to 9:
    // v is always:  1 2 3 4 5 6 7 8 9
    for(int i=1;i<10;i++)
        v.push_back(i);

    // v could be:  9 1 8 6 7 4 6 3 2 
    for(int i=1;i<10;i++)
        v.push_back( rand()%9 + 1 );

Then, you'll need to include algorithm, such that you can use unique to move the unique values of v to the front. Once the unique values are in front, you can remove the duplicates from v by using the iterator returned by unique:
    v.erase( unique(v.begin(),v.end()), v.end() );

PARTNERS