nie zmienia indeksu wierszy i kolumn - jezyk c

markez444
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 31 paź 2009, o 16:49
Płeć: Mężczyzna
Lokalizacja: Podlaskie
Podziękował: 7 razy

nie zmienia indeksu wierszy i kolumn - jezyk c

Post autor: markez444 »

Witam ma prosbę do Was czy moglibyście przejrzeć ten kod bo niechce mi zmieniac numeru wiersza i numeru kolumny:

Kod: Zaznacz cały

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

/*Napisać funkcję znajdującą indeksy(numer wiersza i kolumny) najmniejszego
elementu parzystego w macierzy o rozmiarach nxm, wynik: funkcja powinna przekazać
w parametrach(tablica statyczna)*/


void najmniejszy(int*wiersz, int*kolumna)
{
  int x=0,y=0;
  int tab[x][y];
  int min;
  for(x=0;x<3;x++)
    for(y=0;y<4;y++)
      if(tab[x][y]%2==0 && tab[x][y]<min)
      {
        min=tab[x][y];
        *wiersz=x;
        *kolumna=y;
      }
}
int main()
   {
    int x,y,tab[3][4];
    int wiersz,kolumna,min;
    srand(time(0));
       for(x=0; x<3; x++)
         {
         for(y=0; y<4; y++)
            {
             tab[x][y]=rand()%120;
            }
         }
            printf("Elementy tablicy: 
");
               for(x=0; x<3; x++)
                 {
                 for(y=0; y<4; y++)
                     printf("%d	",tab[x][y]);
                     printf("
");

                 }
                 for(x=0; x<3; x++)
                    {
                     for(y=0; y<4; y++)
                         najmniejszy(&wiersz,&kolumna);
                    }
                    printf("Najmniejszy element parzysty %d jest na pozycji: 
x = %d, y = %d",min,wiersz,kolumna);
return 0;
   }
Ostatnio zmieniony 4 lut 2010, o 01:47 przez czeslaw, łącznie zmieniany 1 raz.
Powód: Cały kod zamykaj w tagach [code], wówczas post będzie czytelniejszy.
pablo1990
Użytkownik
Użytkownik
Posty: 17
Rejestracja: 1 lut 2010, o 19:22
Płeć: Mężczyzna
Lokalizacja: Łódź
Pomógł: 4 razy

nie zmienia indeksu wierszy i kolumn - jezyk c

Post autor: pablo1990 »

A jakie zadanie ma funkcja najmniejszy bo trochę nie rozumiem tego kodu... Wywołujesz ją w zagnieżdżonej pętli a sama funkcja ma w sobie dwie pętle i tutaj bym upatrywał przyczyn problemu. Wystarczą dwie pętle, a nawet można zrobić to w jednej która losuje element macierzy,sprawdza czy jest podzielny przez 2 i zapamiętuje indeksy najmniejszej znalezionej wartości do zmiennych które zwraca po wykonaniu pętli.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

nie zmienia indeksu wierszy i kolumn - jezyk c

Post autor: kadiii »

Uwagi:
1)Używaj znaczników code
2)

Kod: Zaznacz cały

int tab[x][y];
skąd funkcja najmniejszy ma wiedzieć, że ty masz na myśli akurat tablicę, którą zdefiniowałeś w funkcji main(brak przekazanie tablicy do funkcji!)
3)

Kod: Zaznacz cały

int min;
skąd kompilator ma wiedzieć co chcesz wstawić pod min na poczatek?(brak deklaracji zmiennej min!)
4)

Kod: Zaznacz cały

for(x=0; x<3; x++)
{
for(y=0; y<4; y++)
najmniejszy(&wiersz,&kolumna);
}
To nie ma sensu, ale akurat błędu nie powoduje.
Jak poprawisz te błędy to będzie działać prawidłowo.
markez444
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 31 paź 2009, o 16:49
Płeć: Mężczyzna
Lokalizacja: Podlaskie
Podziękował: 7 razy

nie zmienia indeksu wierszy i kolumn - jezyk c

Post autor: markez444 »

do "pablo1990" funkcja najmniejszy ma za zadanie określić numer indeksu wiersza i kolumny na którym znajduje się najmniejszy element
pablo1990
Użytkownik
Użytkownik
Posty: 17
Rejestracja: 1 lut 2010, o 19:22
Płeć: Mężczyzna
Lokalizacja: Łódź
Pomógł: 4 razy

nie zmienia indeksu wierszy i kolumn - jezyk c

Post autor: pablo1990 »

To niepotrzebnie jest umieszczona w pętli w kodzie programu tak jak napisał "kadiii". Dodaj do parametrów wejściowych funkcji tablicę i później w programie wystarczy ją wywołać z odpowiednimi parametrami.
ODPOWIEDZ