Pietia Temat założony przez niniejszego użytkownika |
Generowanie i przeszukiwanie tablicy » 2015-02-13 17:42:05 Mam do zrobienia program, którego zadaniem jest wygenerowanie losowej tablicy, wydrukowanie jej na ekranie oraz wczytanie liczby x i sprawdzenie, które liczby w tablicy są mniejsze od x, ile ich jest oraz ich wypisanie. Napisałem takie coś, co jest nie tak? #include <stdio.h>
#define N 3
void losowe( int * tab[ N ] ) { int i, j; srand( time( NULL ) ); for( i = 0; i < N; i++ ) tab[ i ] = rand() % 1000; }
void wyswietl( int * tab[ N ] ) { int i; for( i = 0; i < N; i++ ) { printf( "%d ", tab[ i ] ); printf( "\n" ); } printf( "\n" ); }
void mniejsze( int * mn, int * tab[ N ] ) { int i, licz = 0; for( i = 0; i < N; i++ ) { if( tab[ i ] < mn ) { licz++; } printf( "Liczba mniejszych: %d\n\n", licz ); } int main() { int tab[ N ]; losowe( tab ); wyswietl( tab ); printf( "Podaj x\n" ); int x; scanf( "%d", & x ); mniejsze( x, tab ); return 0; }
|
|
Pokropow |
» 2015-02-13 19:07:46 Masz tutaj wiele literówek. Po pierwsze po co tyle gwiazdek (wskaźników)? Są one nie dość ,że nie potrzebne, to błędne. Po drugie nie domknąłeś klamer po funkcji "mniejsze" , a raczej po pętli for w tej funkcji. Wstawiam poprawiony kod. Przeanalizuj go i zobacz czym się różni od twojego. #include <cstdio> #include <cstdlib> #include <time.h> using namespace std;
#define N 3
void losowe( int tab[ N ] ) { int i, j; srand( time( NULL ) ); for( i = 0; i < N; i++ ) tab[ i ] = rand() % 1000; }
void wyswietl( int tab[ N ] ) { int i; for( i = 0; i < N; i++ ) { printf( "%d ", tab[ i ] ); printf( "\n" ); } printf( "\n" ); }
void mniejsze( int mn, int tab[ N ] ) { int i, licz = 0; for( i = 0; i < N; i++ ) { if( tab[ i ] < mn ) { licz++; } } printf( "Liczba mniejszych: %d\n\n", licz ); }
int main() { int tab[ N ]; losowe( tab ); wyswietl( tab ); printf( "Podaj x\n" ); int x; scanf( "%d", & x ); mniejsze( x, tab ); return 0; }
|
|
Pietia Temat założony przez niniejszego użytkownika |
» 2015-02-13 19:23:28 Dzięki wielkie:-) Dorobiłem jeszcze funkcję wyświetlającą liczby z tablicy, teraz tylko zastanawiam się czy da się zrobić to samo ale dużo prościej. void mniejsze( int mn, int tab[ N ] ) #include <stdio.h>
#define N 10
void losowe( int tab[ N ] ) { int i, j; srand( time( NULL ) ); for( i = 0; i < N; i++ ) tab[ i ] = rand() % 1000; }
void wyswietl( int tab[ N ] ) { int i; for( i = 0; i < N; i++ ) { printf( "%d ", tab[ i ] ); printf( "\n" ); } printf( "\n" ); }
void mniejsze( int mn, int tab[ N ] ) { int i, licz = 0; for( i = 0; i < N; i++ ) { if( tab[ i ] < mn ) { licz++; } } printf( "Liczba mniejszych: %d\n\n", licz ); }
void ktore( int mn, int tab[ N ] ) { int i, licz = 0; for( i = 0; i < N; i++ ) { if( tab[ i ] < mn ) { licz++; printf( "Oto liczba mniejsza od %d : %d\n", mn, tab[ i ] ); } } }
int main() { int tab[ N ]; losowe( tab ); wyswietl( tab ); printf( "Podaj x\n" ); int x; scanf( "%d", & x ); mniejsze( x, tab ); ktore( x, tab ); return 0; } |
|
Pokropow |
» 2015-02-13 19:39:26 Jeszcze przy deklaracji funkcji (np: "void ktore( int mn, int tab[ N ] )" ) w kwadratowe nawiasy powinny być puste tzn: "void ktore( int mn, int tab[] )". Może to bardziej kosmetyczny problem, ale jak się coś robi to lepiej robić to poprawnie :) . |
|
Pietia Temat założony przez niniejszego użytkownika |
» 2015-02-13 20:59:03 Teraz będzie dobrze. Dzięki wielkie za pomoc! #include <stdio.h>
#define N 10
void losowe( int tab[] ) { int i, j; srand( time( NULL ) ); for( i = 0; i < N; i++ ) tab[ i ] = rand() % 1000; }
void wyswietl( int tab[] ) { int i; for( i = 0; i < N; i++ ) { printf( "%d ", tab[ i ] ); printf( "\n" ); } printf( "\n" ); }
void mniejsze( int mn, int tab[] ) { int i, licz = 0; for( i = 0; i < N; i++ ) { if( tab[ i ] < mn ) { licz++; } } printf( "Liczba mniejszych: %d\n\n", licz ); }
void ktore( int mn, int tab[] ) { int i, licz = 0; for( i = 0; i < N; i++ ) { if( tab[ i ] < mn ) { licz++; printf( "Oto liczba mniejsza od %d : %d\n", mn, tab[ i ] ); } } }
int main() { int tab[ N ]; losowe( tab ); wyswietl( tab ); printf( "Podaj x\n" ); int x; scanf( "%d", & x ); mniejsze( x, tab ); ktore( x, tab ); return 0; }
|
|
« 1 » |