[C] Tablica z losowymi wartościami

minitenshi
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 14 lis 2013, o 21:18
Płeć: Kobieta
Lokalizacja: Polska

[C] Tablica z losowymi wartościami

Post autor: minitenshi »

Hej
Potrzebuje pomocy
mam wyświetlić tablice 4x4,w które będą się znajdować wartości losowe
a następnie podać najmniejsza i największa liczbę oraz średnią wszystkich 16 liczb.
Ostatnio zmieniony 15 lis 2013, o 13:17 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
pawel_wr
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 25 paź 2012, o 04:00
Płeć: Mężczyzna
Lokalizacja: wroclaw
Pomógł: 3 razy

[C] Tablica z losowymi wartościami

Post autor: pawel_wr »

Podaj kod programu, a wtedy ktoś podpowie,co dalej.....

Gotowca raczej się nie spodziewaj.
minitenshi
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 14 lis 2013, o 21:18
Płeć: Kobieta
Lokalizacja: Polska

[C] Tablica z losowymi wartościami

Post autor: minitenshi »

Mam coś takiego ale wyświetla mi same zera i nie wiem jak to naprawić i dalej ruszyć

Kod: Zaznacz cały

#include "stdafx.h" 
int T[4][4]; 
int main (void) 
{ 
int i,j; 
   for(i=1;i<4;i++) 
   { 
      for(j=1;j<4;j++) 
      { 
         T[i][j]=rand(); 
          
printf ("%f ",T[i][j]); 
}}
getchar(); 
   return 0; 
} 
}
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[C] Tablica z losowymi wartościami

Post autor: lukequaint »

pawel_wr pisze:Podaj kod programu, a wtedy ktoś podpowie,co dalej.....

Gotowca raczej się nie spodziewaj.
Trudno samemu wpaść na to jak wygenerować "losowe" wartości, gdy dopiero zaczyna się programować.

Dwa rozwiązania:
1) deklarujesz lokalną tablicę rozmiaru \(\displaystyle{ 4\times 4}\), będzie miała wewnątrz losowe wartości (nie za dobry pomysł),
2) wpisujesz do tablicy losowe wartości - najpospolitszy sposób generowania (wszystkie będą nieujemne, ale łatwo to zmienić), musisz do swojego kodu dodać inicjalizację (w przybliżeniu) wartości funkcji rand():

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int losowe[4][4];

int maksimum = 1000;

int main(void)
{
	srand(time(NULL));
	for (int i = 0; i < 4; ++i) {
		for (int j = 0; j < 4; ++j) {
			losowe[i][j] = rand() % 1000;
                        // wypisujemy dla pewnosci
			printf("%d ", losowe[i][j]);
		}
		printf("
");
	}
	return 0;
}
Z najmniejszą i największą wartością oraz średnią powinnaś sobie poradzić.
minitenshi
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 14 lis 2013, o 21:18
Płeć: Kobieta
Lokalizacja: Polska

[C] Tablica z losowymi wartościami

Post autor: minitenshi »

Ale właśnie mają być wszystkie wartości bez ograniczeń i mają ładnie w tabelce się wyświetlać by później można było zobaczyć czy największa i najmniejsza wartość to faktycznie te wartość
Musi się to zgadzać w tabelką

-- 14 lis 2013, o 21:58 --

i tego nam też zabronili używać i wpisywać
srand(time(NULL));

-- 14 lis 2013, o 22:03 --

czyli ja bym była za tą 1 wersją
Ostatnio zmieniony 15 lis 2013, o 13:18 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Tablica z losowymi wartościami

Post autor: kalwi »

raz, wszystkich wartości nie wyświetli, tylko z przedziału <0, RAND_MAX>
a dwa, skoro wszystkie, to oznacza to zmiennoprzecinkowe, a nie tylko całkowite (no, chyba że to ja się czepiam)

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    float losowe[4][4], najmniejsza, najwieksza, suma;
    int i,j;
    time_t zmienna;
    srand(time(&zmienna)); // generuje nowy zarodek
    for(i=0;i<4;++i)
    {
        for(j=0;j<4;++j)
        {
            losowe[i][j] = rand()+rand()/(RAND_MAX+1.0); // rand()/(RAND_MAX+1.0) spowoduje 
// wylosowanie liczby zmiennoprzecinkowej
            printf("%10.2f", losowe[i][j]); //10.2%f oznacza wyswietlenie liczby zmiennoprzecinkowej z 
// 2 miejscami po przecinku w odstepie 10 znakow od poprzedzajacego znaku
            suma+=losowe[i][j]; // sumuje liczby losowe
        }
        printf("
");
    }
    najwieksza=losowe[0][0];
    najmniejsza=losowe[0][0];
    for(i=0;i<4;i++)
        for(j=0;j<4;j++){
        if(najwieksza<losowe[i][j])
            najwieksza=losowe[i][j];
        if(najmniejsza>losowe[i][j])
            najmniejsza=losowe[i][j];
    }
    printf("
Srednia wynosi: %.2f
", suma/16);
    printf("Najwieksza liczba wynosi: %.2f
", najwieksza);
    printf("Najmniejsza liczba wynosi: %.2f
", najmniejsza);
    return 0;
}
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[C] Tablica z losowymi wartościami

Post autor: lukequaint »

kalwi pisze: a dwa, skoro wszystkie, to oznacza to zmiennoprzecinkowe, a nie tylko całkowite (no, chyba że to ja się czepiam)
(no to też się zaczepię)
Raz: skoro wszystkie, to też ujemne - Twój kod ich nie uwzględnia.
Dwa: miało być raczej bez użycia funkcji srand().

Ładnie
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Tablica z losowymi wartościami

Post autor: kalwi »

@up happy? : D
a co do sranda to można po prostu to wywalić, ale nie widzę jakiegokolwiek sensu, żeby go nie stosować (no, chyba, że sami mają za zadanie wygenerować nowy zarodek, to może wtedy..)

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    float losowe[4][4], najmniejsza, najwieksza, suma;
    int i,j;
    for(i=0;i<4;++i)
    {
        for(j=0;j<4;++j)
        {
            if((i+j)%2)
                losowe[i][j] = (-(rand()+rand()/(RAND_MAX+1.0)));
            else
                 losowe[i][j] = rand()+rand()/(RAND_MAX+1.0);
            printf("%10.2f", losowe[i][j]);
            suma+=losowe[i][j];
        }
        printf("
");
    }
    najwieksza=losowe[0][0];
    najmniejsza=losowe[0][0];
    for(i=0;i<4;i++)
        for(j=0;j<4;j++){
        if(najwieksza<losowe[i][j])
            najwieksza=losowe[i][j];
        if(najmniejsza>losowe[i][j])
            najmniejsza=losowe[i][j];
    }
    printf("
Srednia wynosi: %.2f
", suma/16);
    printf("Najwieksza liczba wynosi: %.2f
", najwieksza);
    printf("Najmniejsza liczba wynosi: %.2f
", najmniejsza);
    return 0;
}
ODPOWIEDZ