zwracanie najwiekszej liczby

0

czesc,
chcialbym zeby kompilator zwracal mi najwieksza liczbe z podanych 10, ale zamiast tego dostaje : https://imgur.com/a/HgkaE

kod:

#include <stdio.h>

int main()

{
    int a[10] , i , t ;
    for ( i=0 ; i<0 ; i++ )
    {
        printf ("enter number %d : ",i+1) ;
        scanf ( " %d" , &a[i]) ;
    }

    t=a[10] ;
    for (i=10 ; i<10 ; i++)
    {
        if(t<a[i])
        {
            t=a[i] ;
        }

        printf(" \n\n%d najwiekszy numer" , t);

    }
}

mam nadzieje, ze dobry dzial ;) jestem w tym wszystkim nowy, takze badzcie wyrozumiali :D

5

Serio?
1) for ( i=0 ; i<0 ; i++ ) - pusta pętla
2) t=a[10] ; - UB, tablica a ma 10 elementów, a[0]...a[9]
3) for (i=10 ; i<10 ; i++) - kolejna pusta pętla

0

dzieki, wlasnie odszedlem na chwile i zauwazylem to for ( i=0 ; i<0 ; i++ ) :D

0

hmm, troche poprawilem i teraz mam inny problem... https://imgur.com/a/wDnpF

#include <stdio.h>

int main()

{
    int a[10] , i , t ;
    for ( i=0 ; i<10 ; i++ )
    {
        printf ("enter number %d : ",i+1) ;
        scanf ( " %d" , &a[i]) ;
    }

    t=a[10] ;
    for (i=0 ; i<10 ; i++)
    {
        if(t<a[i])
        {
            t=a[i] ;
        }

        printf(" \n\n%d najwiekszy numer" , t);

    }
}

czemu zwraca mi to jedno po drugim i skad to 64?

3

1) patrz punkt drugi poprzedniego postu
2) printf(" \n\n%d najwiekszy numer" , t); masz w pętli, więc "zwraca Ci to jedno po drugim"

0

wszystko juz dziala, ale z jakiegos powodu jesli wszystkie liczby podam mniejsze od 64, to zawsze ona jest podana jako najwieksza.. skad ta liczba sie bierze?

5

cytuję
2) t=a[10] ; - UB, tablica a ma 10 elementów, a[0]...a[9]

jeżeli tworzysz tablicę tak:
a[10]
to ta tablica ma 10 elementów, które wskazujesz tak:
a[0], a[1], .... aż do a[9]
a[10] byłoby 11-stym elementem tej tablicy (ale takiego elementu nie "stworzyłeś") więc są tam jakieś smiecie z pamięci które znajdują się za twoją tablicą (akurat trafiło się tak, że jest tam to 64)

0

zrobilem w ten sposob :
#include <stdio.h>

int main()

{
int a[10] , i , t ;
for ( i=0 ; i<10 ; i++ )
{
printf ("enter number %d : ",i+1) ;
scanf ( " %d" , &a[i]) ;
}

t=a[9] ;
for (i=0 ; i<10 ; i++)
{
    if(t<a[i])
    {
        t=a[i] ;
    }

}
if (i=9)
    printf ("\n %d najwieksza liczba ", t ) ;

}

, ale teraz probowalem zrobic funkcje zliczajaca powtarzajace sie cyfry i juz ten sposob z "if (i=9)" na koncu przestal dzialac :D co tutaj dodac, zebym nie mial tego zliczania krok po kroku, ale juz "wynik koncowy" ?

#include <stdio.h>

int main()
{
int a[10] , i ,k ,z=0 ;
for (i=0 ; i<10 ; i++)
{
printf ("podaj liczbe %d :" , i+1 ) ;
scanf ("%d" ,&a[i] ) ;
}
printf ("cyfra do zliczania " ) ;
scanf ("%d",&k );
for ( i=0 ; i<10 ; i++)
{
if (a[i]==k)
{
{
z++ ;
}

printf ("%d wystepuje %d razy" , k , z ) ;

}
}
}

2
if (i=9)

To jest przypisanie 9 do zmiennej i - nie porównanie. Ten "warunek" zawsze będzie prawdziwy.
Nie rozumiem również czemu miałby służyć ten if gdyż wiadomo że po zakończeniu pętli i == 10.

Co do zliczania występowań widzę nadmiar klamer i printf w środku pętli.
Wystarczy że wyrzucisz printf poza pętlę tak:

for (i = 0; i < 10; i++)
{
    if (a[i] == k)
    {
        z++;
    }
}
printf("%d wystepuje %d razy", k, z);

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