[C] Problem z else w pętli for
Ostatnio zmodyfikowano 2015-03-24 15:44
Pietia Temat założony przez niniejszego użytkownika |
[C] Problem z else w pętli for » 2015-03-23 23:10:22 Funkcja "pokaz" ma wypisac wszystkie sumy dwoch liczb podniesionych do danej potegi dajace liczbe n. Dziala, ale jesli takich liczb nie ma, to nie wyswietla sie nic, a chcialbym, by pokazal sie komunikat "nie ma takich liczb". Jesli daje to w else (patrz - kod i komentarze), nie daje to zamierzonego efektu, nie rozumiem dlaczego. # include <stdio.h> # include <math.h>
void pokaz( int n, int m );
int main() { int n, m; printf( "Podaj dwie liczby calkowite. Liczba n to liczba do rozkladu na sume dodatnich liczb calkowitych podniesionych do potegi m. Podaj n:\n" ); scanf( "%d", & n ); printf( "Podaj m (potega):\n" ); scanf( "%d", & m ); pokaz( n, m ); return 0; }
void pokaz( int n, int m ) { int x, y; for( x = 1; x <= n; x++ ) for( y = 1; y <= n; y++ ) { if((( pow( x, m ) ) +( pow( y, m ) ) ) == n ) printf( "Oto liczby x: %d oraz y %d\n", x, y ); } }
Probowalem tez zrobic else if((( pow( x, m ) ) +( pow( y, m ) ) ) != n ) ale efekt jest taki sam. Swoja droga chyba za duzo nawiasow w tym warunku jest, tak mi sie wydaje:-) |
|
Glazus |
» 2015-03-24 13:31:58 Dzieje się tak, bo else wykonuje się za każdym razem kiedy sprawdzany warunek nie jest prawdziwy. Musisz to wykombinować jakoś inaczej (np. dodać zmienną bool exist = false; , której wartość zmienisz na true po wykryciu pierwszej pary spełniającej warunek). |
|
Pietia Temat założony przez niniejszego użytkownika |
» 2015-03-24 15:44:58 Teraz działa, dziękuje bardzo za pomoc!:-) # include <stdio.h> # include <math.h>
void pokaz( int n, int m );
int main() { int n, m; printf( "Podaj dwie liczby calkowite. Liczba n to liczba do rozkladu na sume dodatnich liczb calkowitych podniesionych do potegi m. Podaj n:\n" ); scanf( "%d", & n ); printf( "Podaj m (potega):\n" ); scanf( "%d", & m ); pokaz( n, m ); return 0; }
void pokaz( int n, int m ) { int x, y; bool exist = false; for( x = 1; x <= n; x++ ) for( y = 1; y <= n; y++ ) { if((( pow( x, m ) ) +( pow( y, m ) ) ) == n ) { printf( "Oto liczby x: %d oraz y %d\n", x, y ); exist = true; } } if( exist == false ) printf( "Nie ma takich liczb\n" ); }
|
|
« 1 » |