Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ustawianie liczb w tablicy t[9]

Ostatnio zmodyfikowano 2019-12-01 13:19
Autor Wiadomość
kwdrt3000
Temat założony przez niniejszego użytkownika
Ustawianie liczb w tablicy t[9]
» 2019-12-01 00:33:17
Dzień dobry,

Zajmuję się zadaniem o treści:

Dana jest tablica int t[9]. t[0]=1. Wypisać wszystkie możliwe ustawienia liczb aby spełniały warunki: wartości na sąsiednich polach muszą różnić się o co najmniej 2 i obok siebie nie mogą znajdować się 2 liczby pierwsze.

Oto kod który opracowałem:

C/C++
#include <iostream>
#include <cmath>
using namespace std;

bool pierw( int l )
{
    if( l == 1 ) return false;
   
    for( int i = 2; i < sqrt( l ); i++ )
    {
        if( l % i == 0 ) return false;
       
    }
    return true;
}
bool mozliw( int t[ 9 ], int p, int l )
{
    if( pierw( p ) and pierw( l ) ) return false;
   
    if( abs( l - p ) < 2 ) return false;
   
    for( int i = 0; i < 9; i++ )
    {
        if( t[ i ] == l ) return false;
       
    }
   
    return true;
}

void tabprn( int tab[ 9 ] )
{
    for( int i = 0; i < 9; i++ )
    {
        cout << tab[ i ] << " ";
    }
    cout << endl;
}

void kombo( int t[ 9 ], int pos, int pop ) //kombo(t, 1, 1)
{
    t[ pos - 1 ] = pop;
    if( pos == 9 ) tabprn( t );
   
    for( int i = 2; i < 10; i++ )
    {
        if( mozliw( t, pop, i ) ) kombo( t, pos + 1, i );
       
    }
}

int main()
{
    int t[ 9 ];
    for( int i = 0; i < 9; i++ )
    {
        t[ i ] = 0;
    }
    t[ 0 ] = 1;
   
    kombo( t, 1, 1 );
    return 0;
}


Po uruchomieniu dzieje się... cóż, nic. Gdzie w moim kodzie/rozumowaniu tkwi błąd?

Dziękuję za pomoc.
P-175704
pekfos
» 2019-12-01 00:51:24
Brzmi jakbyś miał wczytać od użytkownika tablicę i tylko wypisać jej niektóre permutacje. Gdybyś miał sam wymyślać liczby, rozwiązań jest niepraktycznie wiele.
P-175705
kwdrt3000
Temat założony przez niniejszego użytkownika
» 2019-12-01 00:57:09
Przepraszam, pominąłem istotną informację: każdą liczbę od 1-9 można wykorzystać tylko raz, przy czym ustawiamy te liczby.
P-175706
pekfos
» 2019-12-01 13:19:26
To zmienia wszystko. Przy tak ograniczonej dziedzinie liczb, nie ma sensu implementować testu pierwszości. Po prostu zrób sobie tablicę w gotowymi wynikami, zwłaszcza że twoja implementacja jest błędna (dla 4 i 9 zwróci że są pierwsze). Funkcja mozliw() nie uwzględnia stopnia wypełnienia tablicy, więc kiedy początkowe zera będą nadpisane, zachowanie będzie błędne.
P-175708
« 1 »
  Strona 1 z 1