Tablica dwuwymiarowa i srand

0

Witam,
To mój pierwszy post. Zaczynam przygodę z c i mam problem z zainicjowaniem losowania elementów tablicy dwuwymiarowej. Program ma zaliczać średnią poszczególnych kolumn tablicy dwuwymiarowej. Gdzie tu jest błąd?
'''#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//Compiler version gcc 6.3.0

int main()
{
float sum=0;
int i, j;
srand(time(NULL));
int tab[i][j]=rand()% 100;

for(j=0; j<3; j++)
{
for(i=0; i<4; i++)
{
sum+=tab[i][j];
}}
printf("suma: %f", sum/4);
return 0;
}
'''

2

Tablica chyba też powinna być float (to zresztą bez znaczenia). Trzeba ją porządnie zainicjalizowaći jeśli ma to być średnia poszczególnych kolumn, to powinno być tyle wartości ile kolumn (tu umieszczone w tablicy):

int main(int argc, char** argv) {
	float arr[4][3];
	srand(time(NULL));
	//initialization
	for (int i = 0; i < 4; ++i) {
		for (int j = 0; j < 3; ++j)
			arr[i][j] = (rand() % 100) * 1.0F; 
	}
	//print array
	printf("initial array: \n");
		for (int i = 0; i < 4; ++i) {
			for (int j = 0; j < 3; ++j) {
				printf("%f ", arr[i][j]);
		}
		printf("\n");
	}
	//compute array of column averages
	float averages[3] = {0, 0, 0};
	for (int i = 0; i < 3; ++i) {
		for (int j = 0; j < 4; ++j){
			averages[i] +=  arr[j][i];
		}
		averages[i] /= 4.0F; 
	}
	printf("averages: \n");
	for (int i = 0; i < 3; ++i)
		printf("%f ", averages[i]);
	
	printf("\n");
	return 0;
}
0
bezowy napisał(a):

int tab[i][j]=rand()% 100;

Jak myślisz, co ten kod robi?

0

Zadanie zadaniem, ale poczytaj sobie na początek jak działają tablice http://www.algorytm.edu.pl/tablice-w-c.html

0

@bezowy: int tab[i][j]=rand()% 100;

Powinno wylosowac liczby z zakresu od 0 do 99 dla tablicy dwuwymiarowej

Ale na jakiej podstawie twierdzisz, że to robi cokolwiek dla tablicy dwuwymiarowej? Zastanów się nad składnią tutaj, co to w ogóle znaczy, i czy ma jakikolwiek sens.

Powiedzmy, że nieco zmienię przykład. Kolejne pytanie: co robi int tab[i][j] = 7;?

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

int main()
{
    float sum=0;
    int i, j;
    srand(time(NULL));
    int tab[i][j];

    for(j=0; j<3; j++)
    {
        for(i=0; i<4; i++)
        {
            tab[i][j] = rand()% 100;
        }
    }

    for(j=0; j<3; j++)
    {
        for(i=0; i<4; i++)
        {
            sum+=tab[i][j];
        }
    }
    printf("suma: %f", sum/4);
    return 0;
}

Musisz zainicjalizować każdą komórkę tablicy oddzielnie. Próbowałeś przypisać do tablicy n-elementowej jedną liczbę wygenerowaną losowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1