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

Przekazywanie tablic jednowymiarowych do funkcji

Ostatnio zmodyfikowano 2011-08-09 22:37
Autor Wiadomość
dexiu03
Temat założony przez niniejszego użytkownika
» 2011-08-07 22:55:53
C/C++
int liczba[ 10 ];
liczba[ 0 ] =( rand() % 4 ) + 7 );
i mógłbym tak ciągle aż do 10 elementu tablicy czyli:
C/C++
liczba[ 9 ] =( rand() % 4 ) + 7 );

a więc chyba dobrze zrobiłem Pańskie przykłady, a co z moim problemem :P?


Nadal nie rozumiem jak przekazać tablicę do funkcji..
P-38380
DejaVu
» 2011-08-07 23:32:15
A co wynika z przykładu zamieszczonego w rozdziale do którego sam dałeś linka? :)
P-38382
dexiu03
Temat założony przez niniejszego użytkownika
» 2011-08-08 15:44:23
ze w moim wypadku na przykladzie nie potrzebne int iRozmiar czy dlos? :P

nie no nie wiem. kombinuje nadal.. nie wiem z której strony ugryźć ten temat oO

edit:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void los( int t[], int dlos ) /*Funkcja losowania liczb w tablicy z zakresu 4 do 10 */
{
    srand( time( NULL ) );
    dlos =(( rand() % 4 ) + 7 ); /*Losowanie od 4 do 10 */
    int i = 0;
    do
    {
        t[ i ];
        i++; }
    while( i < 999 );
   
}

int main()
{
    int t1[ 999 ]; /*rozwiazne */
    los( t1, 999 );
    int i = 0;
    do
    {
        cout << t1[ i ] << endl; /*Wyswietla poprawnie */
        i++;
    }
    while( i < 999 ); /*A tu zakonczylem go :) */
   
    return 0;
}
To modyfikacji... teraz wyswietla mi liczby jedna pod druga, ale nie losuje z zakresu 4-10...
Modyfikowalem go na trzy sposoby i zaden z nich nie dziala...
P-38408
SeaMonster131
» 2011-08-08 16:18:42
Przyjrzyj się temu:
C/C++
dlos =(( rand() % 4 ) + 7 ); /*Losowanie od 4 do 10 */
int i = 0;
do
{
    t[ i ];
    i++; }
while( i < 999 );

Masz zmienną
dlos
 i przypisujesz jej wylosowaną wartość. Po co? Przecież każdy element tablicy ma mieć tą wylosowaną wartość, a nie ta zmienna :)
P-38409
dexiu03
Temat założony przez niniejszego użytkownika
» 2011-08-09 21:11:33
Nie wiem... nie umiem, nie rozumiem, nie potrafię pojąć tego rozdziału, choć dalsze potrafię wykonywać...

zrobiłem kod taki:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void wTablice( int t[], int ile ) /*Funkcja losowania liczb w tablicy z zakresu 4 do 10 */
{
    for( int i = 0; i < ile; i++ )
         cout << t[ i ] << endl;
   
}

void wylosuj( int t[], int ile )
{
    for( int i = 999; ile < i; i++ )
        ( rand() % 4 ) + 7;
   
}

int main()
{
    int liczba;
    cout << "Podaj liczbe tablic: ";
    int t[ liczba ];
    wylosuj( t, liczba );
    wTablice( t, liczba );
   
    return 0;
}
 i nic...
wiesza się program po wczytaniu ile utworzonych tablic ma być...

a jak jest tak:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void wTablice( int t[], int ile ) /*Funkcja losowania liczb w tablicy z zakresu 4 do 10 */
{
    for( int i = 0; i < ile; i++ )
         cout << t[ i ] << endl;
   
}

void wylosuj( int t[], int ile )
{
    for( int i = 999; ile < i; i++ )
        ( rand() % 4 ) + 7;
   
}

int main()
{
    int liczba;
    cout << "Podaj liczbe tablic: ";
    int t[ liczba ];
    wTablice( t, liczba );
   
    return 0;
}

to wypełnia mi kosmicznymi liczbami.. i w ogóle wtedy nie wiem gdzie się wykonuje losowanie gdy nie ma takowej funkcji. oO

dlaczego mi nie losuje odpowiednich liczb ;<?
P-38610
jankowalski25
» 2011-08-09 21:54:25
W funkcji main():

1. Przypisz wartość zmiennej liczba za pomocą cin.
2. Zabezpiecz program przed przypisaniem nieprawidłowej wartości do zmiennej liczba.

W funkcji wylosuj():

1. Zmień wartość początkową zmiennej i na 0.
2. Przypisz wylosowaną liczbę do zmiennej ile.
3. Przypisz do i'tego elementu tablicy wartość zmiennej i.
P-38614
Lamerek
» 2011-08-09 21:55:30
Po pierwsze masz źle ustawione losowanie. Z zakresu od 4 do 10 jest 7 liczb więc musi być
C/C++
( rand() % 7 ) + 4 )

Po drugie w tej funkcji potrzebne ci tylko tablica i 1 zmienna:
C/C++
void( int t[] )
{
    int licznik = 0;
    srand( time( NULL ) );
   
    do
    {
        t[ licznik ] =( rand() % 7 ) + 4 ); /*tu masz tablice t o indeksie 0 bo licznik=0. Liczba jest losowana dla indeksu 0*/
        /*ok wylosował już. W tablicy t w indeksie 0 jest np. liczba 5. I co dalej? Zmieniamy indeks na następny czyli 1 */
        licznik++;
        /*był licznik=0 teraz jest licznik=1 więc t[licznik]=t[1] i się losuje liczba w indeksie 1*/
        /*no dobra ale pętle trzeba jakoś zakończyć. Liczb ma być 10 więc robimy tak*/
    } while( licznik != 10 );
   
}
/*I teraz co się dzieje w pętli: do tablicy t o indeksie licznik=0 losuje liczbe później dodaje do licznika 1*/
/*licznik był 0 teraz jest 1 0+1=1 Tu się losuje następna liczba i tak wkółko aż tablica się zapełni*/

Jak tego nie skumasz to czytaj od nowa cały kurs :)
P-38615
SeaMonster131
» 2011-08-09 21:58:15
Spójrz na to:

void wylosuj( int t[], int ile )


int liczba;
C/C++
int t[ liczba ];
wTablice( t, liczba );

i sie zastanów..
P-38616
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona