Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Zagadka z If

Ostatnio zmodyfikowano 2013-11-27 23:46
Autor Wiadomość
Anubis12
Temat założony przez niniejszego użytkownika
[C] Zagadka z If
» 2013-11-27 22:15:51
Witam
Nie rozumiem zachowania małego programiku ,który napisałem i chciałbym żeby mi ktoś pomógł go zrozumieć.

Mianowicie : Program ma znajdować ,największą liczbe w tablicy. Dalej w zakomentowanych miejscach opisze problem.
C/C++
#include<stdio.h>
#include<stdlib.h>

double maxx( double * wsk )
{
    double a =- 300;
    int i;
   
    for( i = 0; i < 5; i++ )
    {
       
        if( wsk[ i ] < a ) // If jest napisany moim zdaniem źle bo robi cos odwrotnego jezeli a jest wieksze od elementu tablicy to a=wsk[i] czyli przypisujemy mniejszy element?
             a = wsk[ i ]; //wydaje mi sie ze w tym moemencie powinien znajdowac najmniejsza liczbe .. w momencie kiedy zmieniam funckje zeby zwaracala int (zmienne tez zmieniam na    //int , musze zmienic konstrukcje if na poprawna zeby znajdowal najwieksza czyli(a>wsk[i])
       
        printf( "Element %d tablicy to %d  najwieksza %ld\n", i, wsk[ i ], a ); //zmienna a pokazuje jaka ujemna liczbe z kosmu a nie to co powinno faktycznie znajdowac sie pod ta zmienna,
        //kiedy bedzie zmienna typu int dziala poprawnie..
    }
   
    return a;
}
main()
{
    double tab[ 5 ];
    int i;
    printf( "Wypelnij tablice : \n" );
    for( i = 0; i < 5; i++ )
    {
        printf( "Podaj %d tablicy ", i );
        scanf( "%d", & tab[ i ] );
    }
    printf( "Najwiekszy element to : %d \n", maxx( tab ) );
    system( "PAUSE" );
}
P-97703
Monika90
» 2013-11-27 22:43:09
zmienna a pokazuje jaka ujemna liczbe z kosmu a nie to co powinno faktycznie znajdowac sie pod ta zmienna,
Do drukowania double służy %f, %g, %e, %a, a nie %ld, czy %d
W scanf też masz zły format.
P-97705
Anubis12
Temat założony przez niniejszego użytkownika
» 2013-11-27 22:56:46
Tak wiem próbowałem z kombinować z tym bo nie wiedziałem w czym twki problem .Poprawa tego niestety nie pomaga ;/
P-97707
docentpp
» 2013-11-27 23:20:45
Napisana przez Ciebie funkcja

C/C++
double maxx( double * wsk )

Jest napisana błędnie i NIE znajduje elementu
maksymalnego w tablicy. Jest całkowicie
źle napisana ( pomijając printfy i scanfy).
 
P-97711
Anubis12
Temat założony przez niniejszego użytkownika
» 2013-11-27 23:26:49
Przeczytaj temat za nim się wypowiesz .. Napisałem wyraźnie że instrukcja IF jest bez sensu , a właśnie działa poprawnie i tu widze problem ;>
P-97713
Monika90
» 2013-11-27 23:46:37
że instrukcja IF jest bez sensu , a właśnie działa poprawnie
Ponieważ masz błąd w innym miejscu, najprawdopodobniej nieprawidłowy format w scanf.
P-97715
« 1 »
  Strona 1 z 1