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

Generowanie i przeszukiwanie tablicy

Ostatnio zmodyfikowano 2015-02-13 20:59
Autor Wiadomość
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?

C/C++
#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;
    }



P-126514
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.


C/C++
#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;
}
P-126528
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.

C/C++
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;
}
P-126529
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 :) .
P-126530
Pietia
Temat założony przez niniejszego użytkownika
» 2015-02-13 20:59:03
Teraz będzie dobrze. Dzięki wielkie za pomoc!

C/C++
#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;
}
P-126532
« 1 »
  Strona 1 z 1