tablica dwuwymiarowa

Czandrasekar
Użytkownik
Użytkownik
Posty: 27
Rejestracja: 3 paź 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Nowy Jork
Podziękował: 10 razy

tablica dwuwymiarowa

Post autor: Czandrasekar »

Chciałbym się dowiedzieć co jest nie tak z funkcją ntywiersz.

Z góry dzięki za pomoc.

Kod: Zaznacz cały

# include <stdio.h>
# include <math.h>
#include <stdlib.h>
#define n 10
#define m 10

void deklaracjatablicy(int tab[n][m]);
void wyswietl(int tab[n][m]);
void ntywiersz(int tab[n][m],int wektor[m], int nw);

int main() 

{ 
	int tab[n][m];
        int wektor[m];
        int nw;
	deklaracjatablicy(tab);
	wyswietl(tab);
	ntywiersz(tab,wektor,nw);

} 

void deklaracjatablicy(int tab[n][m]) 
	
{ 
	int i,j;
	for(i=0;i<n;i++) 
	for(j=0;j<m;j++)
	tab[i][j]=(i+1)*(j+1);
	
}


void wyswietl(int tab[n][m])

{
int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{ 
			tab[i][j]=(i+1)*(j+1);
			printf("%d	",tab[i][j]);
		}
		printf("
");
	}
}

void ntywiersz(int tab[n][m],int wektor[m],int nw)
{

	int j;
	int wektor[m];
	for(j=0;j<m;j++)
	{ 
		
		printf("Podaj numer wiersza");
		scanf("%d",&nw);
		wektor[j]=tab[nw][j];
		printf("%d	",tab[nw][j]);

	} 
}
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

tablica dwuwymiarowa

Post autor: soku11 »

Napisz moze co ten programik ma konkretnie robic... Bledy wywala dlatego ze probujesz w funkcji ntywiersz zadeklarowac zmienne o takich samych nazwach jak argumenty pobierane przez funkcje...

Kod: Zaznacz cały

void ntywiersz(int tab[n][m],int wektor[m],int nw)
{
    int j;
    for(j=0;j<m;j++)
    {
        printf("Podaj numer wiersza");
        scanf("%d",&nw);
        wektor[j]=tab[nw][j];
        printf("%d	",tab[nw][j]);
    }
}
Ogolnie ta funkcja jest jakos bez sensu zorganizowana bo pobiera jakas wartosc nw, a pozniej jej uzywa jako zwykla zmienna automatyczna :/ Podobnie np funkcja wyswietl, ktora najpierw robi to samo co deklaruj a pozniej wyswietla... POZDRO
Czandrasekar
Użytkownik
Użytkownik
Posty: 27
Rejestracja: 3 paź 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Nowy Jork
Podziękował: 10 razy

tablica dwuwymiarowa

Post autor: Czandrasekar »

Program ma mi wyświetlić n-ty wiersz i przekątne zadeklarowanej tablicy.
W tej chwili jestem przy n-tych wierszach, poprawiłem tak jak napisałeś, ale znowu nie może mi wyświetlić tego n-tego wiersza.
Za kod na wyświetlenie przekątnych również będę wdzięczny.

Kod: Zaznacz cały

# include <stdio.h>
# include <math.h>
#include <stdlib.h>
#define n 10
#define m 10

void deklaracjatablicy(int tab[n][m]);
void ntywiersz(int tab[n][m],int wektor[m]);

int main() 

{ 
	int tab[n][m];
	int wektor[m];
	deklaracjatablicy(tab);
	ntywiersz(tab, wektor);

} 

void deklaracjatablicy(int tab[n][m]) 
	
{ 
	int i,j;
	for(i=0;i<n;i++) 
	{for(j=0;j<m;j++)
	{
		tab[i][j]=(i+1)*(j+1);
				printf("%d	",tab[i][j]);
		}
		printf("
");
	}
}

void ntywiersz(int tab[n][m],int wektor[m])
{

	int j;
	int nw;
	for(j=0;j<m;j++)
	{ 
		
		wektor[j]=tab[nw][j];
		printf("Podaj numer wiersza");
		scanf("%d",&nw);
			printf("%d	",tab[nw][j]);
		
	} 

		
}
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

tablica dwuwymiarowa

Post autor: soku11 »

Ja poprawilem tylko skladnie zeby nie bylo bledow... Bo nie wiedzialem co to ma robic...

No wiec mamy tablice:

Kod: Zaznacz cały

int tab[n][m];
Aby wyswietlic n-ty wiersz:

Kod: Zaznacz cały

# include <stdio.h>
#define n 10
#define m 10

void deklaracjatablicy(int tab[n][m]);
void ntywiersz(int tab[n][m],int powtorzen);

int main()
{
  int tab[n][m];

  deklaracjatablicy(tab);
  ntywiersz(tab, 1);
  getchar();
  return 0;
}

void deklaracjatablicy(int tab[n][m])
{
  int i,j;

  for(i=0;i<n;i++)
  {
    for(j=0;j<m;j++)
    {
        tab[i][j]=(i+1)*(j+1);
        printf("%d	",tab[i][j]);
    }
    printf("
");
  }
}

void ntywiersz(int tab[n][m],int powtorzen)
{
  int x,j,nw;

  for(x=0;x<powtorzen;x++)
  {
    printf("Podaj numer wiersza do wyswietlenia: ");
    scanf("%d",&nw);

    for(j=0;j<m;j++)
      printf("%d	",tab[nw-1][j]);
  }
}

Funkcja przyjmuje jako argument tablice i ile razy zapytac i wyswietlic wiersz... POZDRO
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

tablica dwuwymiarowa

Post autor: smiechowiec »

Kod: Zaznacz cały

# include <stdio.h>
#define n 10
#define m 10

 /* wypełnienie tabliczki mnożenia */
  void deklaracjatablicy(int tab[n][m]) {
    int i, j;
    for(i = 0; i < n; i++)
      for(j = 0; j < m; j++)
        tab[i][j] = (i + 1)*(j + 1);
  }
  
  /* wyświetla zawartość tablicy tab */
  void wyswietl(int tab[n][m]) {
    int i,j;
    for(i = 0; i < n; i++) {
      for(j = 0; j < m; j++) {
        tab[i][j] = (i + 1)*(j + 1);
        printf("%5d", tab[i][j]);
      }
      printf("
");
    }
  }
  
  /* wypełnianie wektora wierszem z tablicy tab */
  void ntywiersz(int tab[n][m],int wektor[m]) {
    int j, nw;
    printf("Podaj numer wiersza ");
    scanf("%d", &nw);
    for(j = 0; j < m; j++) {
      wektor[j] = tab[nw - 1][j];
      printf("%5d", wektor[j]);
    }
    puts("");
  }
  
  /* wypełnianie wektora lewą przekatna tablicy tab */
  void przekatnal(int tab[n][m],int wektor[m]) {
    int j;
    printf("Przekatna \
");
    for(j = 0; j < m; j++) {
      wektor[j] = tab[j][j];
      printf("%5d", wektor[j]);
    }
    puts("");
  }
  
  /* wypełnianie wektora prawą przekatna tablicy tab */
  void przekatnap(int tab[n][m],int wektor[m]) {
    int j;
    printf("Przekatna /
");
    for(j = 0; j < m; j++) {
      wektor[j] = tab[m - j - 1][j];
      printf("%5d", wektor[j]);
    }
    puts("");
  }
  
  int main() {
    int tab[n][m];
    int wektor[m];
    deklaracjatablicy(tab);
    wyswietl(tab);
    przekatnal(tab,wektor);
    przekatnap(tab,wektor);
    ntywiersz(tab, wektor);
    return 0;
  }
  
Czandrasekar
Użytkownik
Użytkownik
Posty: 27
Rejestracja: 3 paź 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Nowy Jork
Podziękował: 10 razy

tablica dwuwymiarowa

Post autor: Czandrasekar »

Bardzo mi pomogliście. Tylko teraz siedzę dwie godziny i nie mogę zadeklarować losowych wartości tablicy.
Jak macie chwile czasu, pomóżcie mi jeszcze raz.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

tablica dwuwymiarowa

Post autor: soku11 »

Dolacz biblioteki

Kod: Zaznacz cały

#include <stdlib.h>
#include <time.h>
I do maina dodaj:

Kod: Zaznacz cały

srand(time(NULL));
A pozniej losujesz tak:

Kod: Zaznacz cały

tab[i][j]=rand()%30;
Co zwroci liczba naturalan z zakresu [0;29]. POZDRO
Czandrasekar
Użytkownik
Użytkownik
Posty: 27
Rejestracja: 3 paź 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Nowy Jork
Podziękował: 10 razy

tablica dwuwymiarowa

Post autor: Czandrasekar »

Wielkie dzięki, masz u mnie dobrego browara
ODPOWIEDZ