[ LeSaS @ 20.08.2013. 12:28 ] @
Moze li neko da mi kaze kako da prikazem najmanji broj matrice ?


recimo imam 2d matricu i hteo bih da mi printa min druge kolone.
Citat:

min=a[0][0];
j=1;
for(i=0;i<n;i++)
{
if(a[ i ] [ j ]<min)
min=a[ i ] [ j ];
}
printf("Najmanji druge kolone je %d\n", min);
[ LeSaS @ 20.08.2013. 13:41 ] @
zaboravih da kazem ovaj kod ne radi.
[ X Files @ 20.08.2013. 15:10 ] @
Citat:

Code:

min=a[0][0];
 j=1;
 for(i=0;i<n;i++)
 {
 if(a[ i ] [ j ]<min)
 min=a[ i ] [ j ];
 }
 printf("Najmanji druge kolone je %d\n", min);


Minimum treba da ima inicijalnu vrednost prvog elementa te druge kolone, a to je "min=a[0][1]", odnosno prema tvom kodu "min=a[0][j]", a to dalje znaci da "j=1" treba da bude ispred ove linije koda.

Prema tvom kodu /netestirano/:
Code:

    j=1;
    min=a[0][j];
    for( i=0; i<n; i++)
    {
        if ( a[ i ] [ j ] < min )
            min = a[i][j];
    }
    printf("Najmanji druge kolone je %d\n", min);

Dalje, obrati paznju na liniju:
for( i=0; i<n; i++)

Vrednost prvog elementa druge kolone si vec uzeo kao potencijalni minimum. Nema potrebe da se opet testira, dakle, mozes da petlju zapocnes od drugog elementa (1).
for( i=1; i<n; i++)

[ djoka_l @ 20.08.2013. 15:23 ] @
Uz pretpostavku da je sve ostalo u redu, program koji si ti ovde napisao uzima kao inicijalnu vrednost za min element a[0][0] koji nije u drugoj koloni, pa rezultat može da bude ili minimalan element druge kolone ili a[0][0], ako je manji od svakog element druge kolone.

Code (c):

  j=1;
  min=a[0][j];
  for(i=1;i<n;i++)
    if(a[i][j]<min)  min=a[i][j];
  printf("Najmanji druge kolone je %d\n", min);
 


Ostali razlozi zbog kojih ti program ne radi bi bili pogrešno deklarisana matrica ili tip podataka za min. Podatak se ispisuje kao da je ceo broj, a ako je ideja da bude double ili float, neće ispisati ispravan rezultat.

Edit: preteče me X Files
[ LeSaS @ 20.08.2013. 16:43 ] @
Hvala!
Promenio i pomerio j=1 ispred a[0][j] , radi kao san

za slucaj da jos nekoga zanimaju ovi bebi koraci

Code:

#include <stdio.h>

main()
{
    int a[20][20],min,i,j,n;
    printf("Unesite dimenziju matrice \n");
    scanf("%d",&n);
    printf("Unesite %d elemenata matrice \n", n*n);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        scanf("%d",&a[i][j]);
    j=1;
    min=a[0][j];
    for(i=0;i<n;i++)
    {
        if(a[i][j]<min)
            min=a[i][j];
    }
    printf("Najmanji druge kolone je %d\n", min);
}


[Ovu poruku je menjao LeSaS dana 20.08.2013. u 18:32 GMT+1]