najmniejsza liczba parzysta tablicy[c]

0

Czesc, mam problem dotyczacy czesci programu, ktory musze napisac - mianowicie program polega na wczytaniu z klawiatury załóżmy 100 elementów i następnie wykonuje pewne zadania - jednym z nich jest znalezienie najmniejszego elementu parzystego.
Głowiąc się nad tym jakis czas wpadłem na pomysł aby dzieki petli for i isntrukcji warunkowej if napisać taki kod(podaje tylko fragment):

for(i=0;i<roz;i++){
if (tab[i]%2==0)
{min=0;
if(tab[i]<tab[min])
min=tab[i];
}
}



printf("najmniejszy parzysty: %d\n" , min); 

Program sie kompiluje, ale cały czas za element minimalny wyswietla 0, dlatego licze na pomoc:)
Z gory dzięki

0

if(tab[i]<tab[min])
min=i;

i to: min=0; przed pętlą. aczkolwiek zapamiętywanie indeksu zamiast samej liczby jest bez sensu

nie uwzględniłeś dwóch rzeczy:

  • co się stanie jeśli nie będzie liczb parzystych
  • co się stanie gdy podam takie liczby: 1, 2, 4, 6?
0

ale wlasnie ja chce aby program pokazał mi najmniejsza liczbe parzysta a nie jej indeks, wiec dlaczego min=i?
co to twoich uwag masz racje muszę uwzględnic fakt jezeli liczb parzystych nie bedzie(choć nie wiem jak); a w drugim przypdku za bardzo nie rozumiem o co ci chodzi bo jezeli program bedzie działał poprawnie to najmniejsza liczba jest 2

0
#include <stdio.h>

int main()
{
  int n;
  int* tab;
  int i;
  scanf("%d",&n);
  tab = malloc(sizeof(int)*n);
  for (i=0; i<n; i++)
    scanf("%d",tab+i);

  /* ten twoj fragment */
  int min;
  int znal = 0;
  for (i=0; i<n; i++)
    if (tab[i]%2==0)
      if (!znal || tab[i]<min)
        {
          znal = 1;
          min = tab[i];
        }
  /**/
  if (znal)
    {
      printf("Najmniejsza parzysta: %d\n",min);
    }
  else
    {
      printf("Nie znaleziono!\n");
    }
  free(tab);
  return 0;
}

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