najmniejsza liczba parzysta tablicy[c]

Odpowiedz Nowy wątek
2011-11-29 19:09
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

edytowany 1x, ostatnio: madmike, 2011-11-29 20:18

Pozostało 580 znaków

2011-11-29 19:12
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?

░█░█░█░█░█░█░█░█░█░█░█░
edytowany 2x, ostatnio: krwq, 2011-11-29 19:12

Pozostało 580 znaków

2011-11-29 19:37
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

Pozostało 580 znaków

2011-11-29 21:59
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;
}

░█░█░█░█░█░█░█░█░█░█░█░
nie ma bool-a w C - krwq 2011-11-29 22:04
własnie się zjażyłem, że to C, głupi ja - adf88 2011-11-29 22:05

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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