[RISOLTO] Trovare il maggiore tra N numeri in C

C, C++, Java, ...

[RISOLTO] Trovare il maggiore tra N numeri in C

Messaggioda lcproductions » 15/12/2017, 22:01

Salve a tutti,
da un po' di tempo sto smadonnando con questo problema:

Dati in input N numeri interi, si determini il massimo e il minimo tra essi


Il programma deve essere scritto in C .
Ecco il codice che ho scritto fino ad ora:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>

int main() {
   int *a,max,min,n,i;
   printf("Quanti numeri vuoi inseririe? ");
   scanf("%d", &n);
   a = malloc(n * sizeof(int));
   for (i = 0; i<n; i++) {
     scanf("%d", &a[i]);
   }
   
   // Determino il maggiore dei numeri
   if(a[n-1] > a[n-2]){
     max = a[n-1];
   }else{
     max = a[n-2];
   }
   for (i = n - 3; i >= 0; i--) {
     if(max < a[i]){
       max = a[i];
     }
   }

   // Determino il minore dei numeri
   if(a[n-1] < a[n-2]){
     min = a[n-1];
   }else{
     min = a[n-2];
   }
   for (i = n - 3; i >= 0; i--) {
     if (min > a[i]) {
       min = a[i];
     }
   }

   printf("Massimo: %d\n", max);
   printf("Minimo: %d\n", min);
  return 0;
}


Il programma funziona, il problema è che l'ho creato usando un array dinamico , e quindi un puntatore.
Nel capitolo del libro in cui è presente questo problema, array e puntatori non sono stati ancora trattati, dunque non dovrei usarli.
Qualcuno a qualche idea su come farne a meno?

Grazie in anticipo per le risposte.
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Trovare il maggiore tra N numeri in C

Messaggioda marcomg » 15/12/2017, 22:46

Ti bastano 3 variabili: una di appoggio dove prelevi il valore, una con il massimo e una con il minimo. La prima volta che prelevi massimo e minimo coincidono, poi fai i dovuti controlli ad ogni acquisizione e salvi il valore dei nuovi max e min se necessario.
Scusa la brevità ma sono da smartphone ;)
Windows is what you open when you want fresh air from outside.
Avatar utente
marcomg
Hero Member
Hero Member
 
Messaggi: 5551
Iscritto il: 22/08/2011, 18:54

Re: Trovare il maggiore tra N numeri in C

Messaggioda lcproductions » 16/12/2017, 16:22

Potresti farmi un esempio con del codice, o almeno con un algoritmo ?
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Trovare il maggiore tra N numeri in C

Messaggioda marcomg » 17/12/2017, 23:30

Windows is what you open when you want fresh air from outside.
Avatar utente
marcomg
Hero Member
Hero Member
 
Messaggi: 5551
Iscritto il: 22/08/2011, 18:54

Re: Trovare il maggiore tra N numeri in C

Messaggioda lcproductions » 18/12/2017, 22:47

Grazie mille, domani proverò.
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Trovare il maggiore tra N numeri in C

Messaggioda lcproductions » 19/12/2017, 19:23

Okay, sono riuscito a scrivere del codice funzionante.
Lo posto qui per gli altri utenti e metto "Risolto nel titolo"
Codice: Seleziona tutto
/*
  PROBLEMA: dati in input N numeri interi, trova il maggiore e il minore tra essi
  V. 2
*/
#include <stdio.h>

int main() {
  int x,n,mg,mn,i;
  printf("Quanti numeri vuoi inserire?");
  scanf("%d", &n);
  printf("Inserisci i tuoi numeri\n");
  scanf("%d", &x);
  mn = mg = x;
  for (i = 1; i < n; i++) {
    scanf("%d", &x);
    if (mg < x) {
      mg = x;
    }else if(mn > x){
      mn = x;
    }
  }
  printf("Maggiore: %d\n", mg);
  printf("Minore: %d\n", mn);
  return 0;
}

Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: [RISOLTO] Trovare il maggiore tra N numeri in C

Messaggioda marcomg » 20/12/2017, 20:09

Ottimo lavoro, ho messo risolto ;)
Windows is what you open when you want fresh air from outside.
Avatar utente
marcomg
Hero Member
Hero Member
 
Messaggi: 5551
Iscritto il: 22/08/2011, 18:54

Re: [RISOLTO] Trovare il maggiore tra N numeri in C

Messaggioda _Alex_ » 02/02/2018, 21:31

Ci sarebbe anche un'altra soluzione, ma non so se anche questa non e' ammessa:
se vuoi creare un array statico delle dimensioni esatte puoi passare al main gli argomenti argc ed argv.

I nomi non sono obbligatoriamente quelli, ma storicamente ci si e' abituati all'uso, il primo e' il contatore degli argomenti della riga di comando, il secondo e' l'argomento vero e proprio.

Io lo usavo per allenarmi coi puntatori mettendo come argomento una stringa, che veniva passata come array di caratteri terminata da \0, con i numeri non saprei se inserire la dimensione dell'array (probabile) oppure tutti i numeri in fila, ma non dovrebbe essere difficile venirne a capo.
_Alex_
Jr. Member
Jr. Member
 
Messaggi: 56
Iscritto il: 02/09/2017, 8:32
Località: Genova

Re: [RISOLTO] Trovare il maggiore tra N numeri in C

Messaggioda lcproductions » 02/02/2018, 21:36

Quella con gli array era la prima soluzione che mi era venuta in mente, la sfida era farlo senza.
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti