Generowanie tablicy dwuwymiarowej i jej zapis do CSV

0

Cześć! Program ma wygenerować tablice dwuwymiarową [4][m] oraz zapiasć do pliku CSV. Chodzi o to, żeby kolumny były po prostu ponumerowane od 0 do 3, a wierszach znalazły sie pseudolosowe liczny. niestety program wypluwa mi tablice jednowymiarową. Może ktś podsunie pomysł co źle robie?

#include <stdio.h>
#include <time.h>
#define m 10
void losowanie(int w, int tab1[][m])
{
    int z=time(NULL);
    srand(z);
    int i, j ;
     for(j=0 ; j<4 ; j++)
        tab1[j][0]= j ;
    {
       for(i=0; i<w; i++)
        {
            tab1[j][i+1]=(rand()%10) ;
        }
    }

}
void wypisz(int w, int tab1[][m])
{
    int i, j ;
    for(i=0; i<w; i++)
    {
        for(j=0; j<4; j++)
        {

        printf("%d\n",tab1[j][i]);
    }
    printf("\n");
}
}

void zapisuj(int w, int tab1[][m])
{
    int i,j ;
    FILE* plik ;
    plik = fopen("C:\\plik.csv", "w") ;
    for(i=0 ; i<m ; i++)
    {
        for (j=0 ; j<4 ; j++)
        {
            fprintf( plik, "%d\n", tab1[j][i] ) ;
        }
        fprintf(plik, "\n") ;
    }
    fclose(plik) ;
}
int main()
{

    int tab1[4][m] ;
    losowanie(m, tab1);
    wypisz(m, tab1);
    zapisuj(m, tab1) ;
    return 0 ;
}
1

@kucia2129 Program wypluwa jednowymiarową, bo źle zapisujesz - za każdą liczbą dajesz znak nowej linii, stąd tylko jedna kolumna.
Poprawna wersja:

void zapisuj(int w, int tab1[][m])
{
    int i,j ;
    FILE* plik ;
    plik = fopen("C:\\plik.csv", "w") ;
    for(i=0 ; i<m ; i++)
    {
        for (j=0 ; j<4 ; j++)
        {
            fprintf( plik, "%d;", tab1[j][i] ) ; //o tutaj zmieniłem nową linię na średnik
        }
        fprintf(plik, "\n") ;
    }
    fclose(plik) ;
}
0

@xfin
Dzięki! Mam teraz inny problem. Dlaczego program za każdym razem daje mi te same liczby mimo użycia
srand(time(NULL));
Dodam, że program sie kompiluje, włącz się a nastepnie wywala błąd. Ma ktoś jakiś pomysł?


#include <stdio.h>
#include <time.h>
#define m 10
void losowanie(int w, int tab1[][m])
{   srand(time(NULL));
    int i, j ;
     for(j=0 ; j<4 ; j++)
        tab1[j][0]= j ;
    {
       for(i=1; i<w; i++)
        {
            tab1[j][i]=rand()%15 ;
        }
    }

}
void wypisz(int w, int tab1[][m])
{
    int i, j ;
    for(i=0; i<w; i++)
    {
        for(j=0; j<4; j++)
        {

        printf("%d ",tab1[j][i]);
    }
    printf("\n");
}
}

void zapisuj(int w, int tab1[][m])
{
    int i,j ;
    FILE* plik ;
    plik = fopen("C:\\plik.csv", "w") ;
    for(i=0 ; i<m ; i++)
    {
        for (j=0 ; j<4 ; j++)
        {
            fprintf( plik, "%d", tab1[j][i] ) ;
        }
        fprintf(plik, "\n") ;
    }
    fclose(plik) ;
}
int main()
{  
    int tab1[4][m] ;
    losowanie(m, tab1);
    wypisz(m, tab1);
    zapisuj(m, tab1) ;
    return 0 ;
}

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