Jak zrobić poprawną funkcje w C, która wylosuje do tablicy liczby, a następnie wypisze?

0

Jak zrobić poprawne dwie funkcje w C, żeby jedna losowała liczby do tablicy dwuwymiarowej max 100x100 z zakresu NxN, które poda użytkownik, a druga wyświetlała zawartą tablice?

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

int wypelnienie_macierzy(int tab[100][100],int &n)
{
    printf("Wybierz wielkosc macierzy: ");
    scanf("%d",&n);
    int i,j,n;
    srand(time(NULL));
    for (i=1;i<=n;++i)
    {
        for (j=1;j<=n;++j)
            tab[i][j]=rand()%10;
    }
}

void wyswietlenie_macierzy(int tab[100][100]);
for (i=1;i<=n;++i)
    {
        for (j=1;j<=n;++j)
        {
            printf("%d ",tab[i][j]);
        }
        printf("\n");
    }


int tab[100][100],n;
int main()
{
    wypelnienie_macierzy(int tab[100][100],int &n);
    wyswietlenie_macierzy(int tab[100][100]);
    return 0;
}
2
  1. W C/C++ indeksacja tablic jest od 0 - zawsze!
  2. Nie używaj zmiennych globalnych.
  3. Poczytaj sobie po co służą nawiasy klamrowe.
  4. Poczytaj sobie czym się różni deklaracja funkcji od jej definicji.
0

Zmienne podaje tylko w funkcjach, tablice dałem od 0, ale nadal nie chce mi się skompilować i nie wiem o musze zmienić

0

Eh, nie chodziłeś na zajęcia a teraz korzystasz z cudzych notatek, albo ze zlepku kodów z sieci. To są na prawdę łatwe rzeczy i zdecydowanie dla Ciebie będzie lepiej jeżeli przeczytasz jakiś kurs z podstawami - jak chcesz tak do końca semestru próbować, to na następnych zajęciach nie będzie łatwiej...
Masz tutaj kod bez wyświetlania, dopisz je sobie sam.

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

void fillMatrix(int **, int n);
//---------------------------------------------------------

int main(){

    printf("Set n: ");
    int n;
    scanf("%d", &n);

    int **matrix = (int **) malloc(n * sizeof(int *)); //uzyj dynamicznej tablicy
    for(int i = 0; i < n; ++i) matrix[i] = (int *) malloc(n * sizeof(int));

    fillMatrix(matrix, n);

    free(matrix);

    return 0;
}
//---------------------------------------------------------

void fillMatrix(int **matrix, int n){
    srand(time(NULL));

    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
            matrix[i][j] = rand() % 10;
}
//---------------------------------------------------------
0
Gospel napisał(a):

Zmienne podaje tylko w funkcjach, tablice dałem od 0, ale nadal nie chce mi się skompilować i nie wiem o musze zmienić

Jedno z dwóch:

  1. Pytasz na forum wróżbitów
  2. Pokazujesz źródła o których mowa.
0

Co zrobić, żeby scanf("%d",&n); działał mi w funkcji i był widziany jako zmienna globalna ?

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

void wpisz(int tab[100][100], int n)
{
    int i,j;
    srand(time(NULL));
    printf("Wybierz wielkosc macierzy: ");
    scanf("%d",&n);
    for (i=0;i<n;++i)
    {
        for (j=0;j<n;++j)
            tab[i][j]=rand()%10;
    }
}

void wypisz(int tab[100][100], int n)
{
    int i,j;
    printf("Podglad macierzy\n");
    for (i=0;i<n;++i)
    {
        for (j=0;j<n;++j)
        {
            printf("%d ",tab[i][j]);
        }
        printf("\n");
    }
}


int main()
{
    int tab[100][100];
    int n;
    wpisz(tab,n);
    printf("Hello world!\n");
    wypisz(tab,n);
    return 0;
}
2
  1. Nie używaj zmiennych globalnych.
  2. int do indeksacji tablicy? Czyżby przewidujesz ujemne rozmiary? Używaj size_t lub unsigned
  3. Odradzam też nie anglojęzycznego nazewnictwa: http://4programmers.net/Forum/1208091
size_t askForSize()
  {
   size_t size=0;
   printf("Wybierz wielkosc macierzy: ");
   scanf("%u",&size);
   return size;
  }
0

Chodzi mi o to, że w C++ wystarczyło dać
void wpisz(int tab[100][100], int **&**n), a jeśli przy C próbuje to robić to mi się nie kompiluje.

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctime>

using namespace std;

void wpisz(int tab[100][100], int &n)
{
    int i,j;
    srand(time(NULL));
    printf("Wybierz wielkosc macierzy: ");
    scanf("%d",&n);
    for (i=0;i<n;++i)
    {
        for (j=0;j<n;++j)
            tab[i][j]=rand()%10;
    }
}

void wypisz(int tab[100][100], int n)
{
    int i,j;
    printf("Podglad macierzy\n");
    for (i=0;i<n;++i)
    {
        for (j=0;j<n;++j)
        {
            printf("%d ",tab[i][j]);
        }
        printf("\n");
    }
}


int main()
{
    int tab[100][100];
    int n;
    wpisz(tab,n);
    printf("Hello world!\n");
    wypisz(tab,n);
    return 0;
}
 
1

Ponieważ w C nie ma referencji.

int main()
  {
   int tab[100][100];
   size_t size=askForSize();
   randTable(tab,size);
   showTable(tab,size);
   return 0;
  }

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