Ordinamento Numeri

di il
11 risposte

Ordinamento Numeri

Bungiorno, chiedo cortesemente aiuto, inerente  a questo programma di ordinamento.Vorrei usare le due variabili di confornto Max e Min come puntatori, Ma credo di commettere degli errori.Grazie e Buona domenica;

#include <stdio.h>

// Prototipi per il calcolo del valore Massimo e Minimo
void Massimo(double Numero1, double Numero2, double Numero3, double Numero4);
void Minimo(double Numero1, double Numero2, double Numero3, double Numero4);

int main(void) {
    double Valore1, Valore2, Valore3, Valore4;
    printf("Inserisci il primo Numero: ");
    scanf("%lf", &Valore1);
    printf("Inserisci il secondo Numero: ");
    scanf("%lf", &Valore2);
    printf("Inserisci il terzo Numero: ");
    scanf("%lf", &Valore3);
    printf("Inserisci il quarto Numero: ");
    scanf("%lf", &Valore4);
    
    // Richiamo della funzione Massimo
    Massimo(Valore1, Valore2, Valore3, Valore4);
    
    // Richiamo della funzione Minimo
    Minimo(Valore1, Valore2, Valore3, Valore4);

    return 0;
}

void Massimo(double Numero1, double Numero2, double Numero3, double Numero4) {
    double *Max =NULL;
    Max=&Numero1;
    if (&Numero2 > Max) Max = &Numero2;
    if (&Numero3 > Max) Max = &Numero3;
    if (&Numero4 > Max) Max = &Numero4;
    printf("Il valore massimo è: %f\n", *Max);
}

void Minimo(double Numero1, double Numero2, double Numero3, double Numero4) {
    double *Min =NULL;
    Min=&Numero1;
    if (&Numero2 < Min) Min = &Numero2;
    if (&Numero3 < Min) Min = &Numero3;
    if (&Numero4 < Min) Min = &Numero4;
    printf("Il valore minimo è: %f\n", *Min);
}

11 Risposte

  • Re: Ordinamento Numeri

    Stai confrontando I PUNTATORI, NON i valori!

    PERCHE' usi i puntatori? Che cosa centrano?

    .

    Poi, SEMBRA una stupidaggine MA non lo e'. 
    Ci sono degli STANDARD per la scritura del codice in C/C++ che conviene seguire. 
    Parti da qui'

    https://isocpp.org/wiki/faq/coding-standards

  • Re: Ordinamento Numeri

    if (&Numero2 < Min) Min = &Numero2;

    deve essere

    if (Numero2 < *Min) Min = &Numero2;

    e così via

  • Re: Ordinamento Numeri

    07/07/2024 - oregon ha scritto:


    if (&Numero2 < Min) Min = &Numero2;

    deve essere

    if (Numero2 < *Min) Min = &Numero2;

    e così via

    Grazie Oregon, provato corretto e funzionante,perche' non viene considerato l'indirizzo della variabile da passare al puntatore?Es *Max=&Numero1 etc 

    Buona domenica

  • Re: Ordinamento Numeri

    07/07/2024 - migliorabile ha scritto:


    Stai confrontando I PUNTATORI, NON i valori!

    PERCHE' usi i puntatori? Che cosa centrano?

    .

    Poi, SEMBRA una stupidaggine MA non lo e'. 
    Ci sono degli STANDARD per la scritura del codice in C/C++ che conviene seguire. 
    Parti da qui'

    https://isocpp.org/wiki/faq/coding-standards

    Grazie ,volevo provare con i puntatori

  • Re: Ordinamento Numeri

    07/07/2024 - Antonio-Sim ha scritto:


    ,perche' non viene considerato l'indirizzo della variabile da passare al puntatore?Es *Max=&Numero1 etc 

    Non ho capito cosa intendi

    Temo che tu non abbia ancora chiari i concetti base della gestione dei puntatori

  • Re: Ordinamento Numeri

    07/07/2024 - oregon ha scritto:


    07/07/2024 - Antonio-Sim ha scritto:


    ,perche' non viene considerato l'indirizzo della variabile da passare al puntatore?Es *Max=&Numero1 etc 

    Non ho capito cosa intendi

    Temo che tu non abbia ancora chiari i concetti base della gestione dei puntatori

    Infatti ho qualche dubbio :perché un puntatore lo gestisco cosi:

    int Numero =5;
    int *PtrNumero=NULL;
    PtrNumero=&Numero;
       printf(" Il risultato è :%d", *PtrNumero);

    Però nella funzione Max o Min

    La scrittura Max=&Numero non viene accettata. 

    Ma si usa *Max=Numero

    Questo non capisco. 

    Grazie e buona serata 

  • Re: Ordinamento Numeri

    07/07/2024 - Antonio-Sim ha scritto:


    La scrittura Max=&Numero non viene accettata. 

    Ma si usa *Max=Numero

    Giustamente essendo Max un puntatore.

    In realtà dovresti chiamarlo pMax

    double *pMax;

  • Re: Ordinamento Numeri

    07/07/2024 - oregon ha scritto:


    07/07/2024 - Antonio-Sim ha scritto:


    La scrittura Max=&Numero non viene accettata. 

    Ma si usa *Max=Numero

    Ma dove? Cosa dici?

    Dove hai scritto così nelle funzioni?

    Per esempio qua

    void Massimo(double Numero1, double Numero2, double Numero3, double Numero4) {
        double *Max =NULL;
        Max=&Numero1;
        if (&Numero2 > Max) Max = &Numero2;
        if (&Numero3 > Max) Max = &Numero3;
        if (&Numero4 > Max) Max = &Numero4;
        printf("Il valore massimo è: %f\n", *Max);
    }
    
    
  • Re: Ordinamento Numeri

    Dove?

    In quale riga hai scritto

    *Max=Numero;

    ??

    Questo codice 

    void Massimo(double Numero1, double Numero2, double Numero3, double Numero4) {
        double *Max =NULL;
        Max=&Numero1;
        if (&Numero2 > Max) Max = &Numero2;
        if (&Numero3 > Max) Max = &Numero3;
        if (&Numero4 > Max) Max = &Numero4;
        printf("Il valore massimo è: %f\n", *Max);
    }

    dovrebbe essere

    void Massimo(double Numero1, double Numero2, double Numero3, double Numero4) {
        double *pMax = &Numero1;
        if (Numero2 > *pMax) Max = &Numero2;
        if (Numero3 > *pMax) Max = &Numero3;
        if (Numero4 > *pMax) Max = &Numero4;
        printf("Il valore massimo è: %f\n", *pMax);
    }
    
    oppure se non usi il puntatore
    
    
    void Massimo(double Numero1, double Numero2, double Numero3, double Numero4) {
        double Max = Numero1;
        if (Numero2 > Max) Max = Numero2;
        if (Numero3 > Max) Max = Numero3;
        if (Numero4 > Max) Max = Numero4;
        printf("Il valore massimo è: %f\n", Max);
    }
  • Re: Ordinamento Numeri

    Grazie Oregon, per la pazienza.Ho scritto delle corbellerie ,chiedo venia.

  • Re: Ordinamento Numeri

    Non ti preoccupare. Importante è comprendere dagli errori e studiare

Devi accedere o registrarti per scrivere nel forum
11 risposte