Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Il valore minimo
Forum - C/C++ - Il valore minimo

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
fenice (Normal User)
Newbie


Messaggi: 19
Iscritto: 10/08/2019

Segnala al moderatore
Postato alle 12:44
Martedì, 13/08/2019
Buongiorno ho fatto questo programma però non riesco a trovare il numero minore, perché la condizione secondo me è sbagliata.

Io ho scritto questo:
Codice sorgente - presumibilmente C/C++

  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<windows.h>
  4. main()
  5. {
  6.         int n,min;
  7.         while(n>0) {
  8.                 printf("Inserisci un numero\n");
  9.                 scanf("%d",&n);
  10.                 if(n>0&&(min=0||n<min))
  11.                         min=n;}
  12.         printf("Il minimo e' %d\n", min);
  13.         getch();
  14. }




PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:09
Martedì, 13/08/2019
int n=1, min=INT_MAX;

if(n>0 && n<min)

Ultima modifica effettuata da nessuno il 13/08/2019 alle 13:37


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
fenice (Normal User)
Newbie


Messaggi: 19
Iscritto: 10/08/2019

Segnala al moderatore
Postato alle 17:03
Martedì, 13/08/2019
Ho provato a scriverlo anche con il ciclo for però la condizione di uscita è sbagliata secondo me.

Codice sorgente - presumibilmente C/C++

  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<windows.h>
  4. main()
  5. {
  6.         int n=1,min=INT_MAX;
  7.         for(n=1;n<=0;n++)
  8.         {       printf("Inserisci un numero\n");
  9.                 scanf("%d",&n);
  10.                 if(n>0&&n<min)
  11.                         min=n;}
  12.         printf("Il minimo e' %d\n", min);
  13.         getch();
  14. }


PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 17:06
Martedì, 13/08/2019
Scusa, ma il numero minore rispetto a cosa?

PM Quote
Avatar
fenice (Normal User)
Newbie


Messaggi: 19
Iscritto: 10/08/2019

Segnala al moderatore
Postato alle 17:59
Martedì, 13/08/2019
Trovare il numero più piccolo della sequenza

PM Quote
Avatar
fenice (Normal User)
Newbie


Messaggi: 19
Iscritto: 10/08/2019

Segnala al moderatore
Postato alle 18:00
Martedì, 13/08/2019
Trovare il numero più piccolo della sequenza

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 19:58
Martedì, 13/08/2019
Sai quanto è lunga la sequenza?

Il for deve partire da 1 ed arrivare al Numero di elementi della sequenza, E COSA IMPORTANTE:
Se modifichi il contatore del for, non potrà mai funzionare.
Per il for usa un contatore diverso da n!

PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 21:47
Martedì, 13/08/2019
Si può fare anche senza conoscere in anticipo la quantità delle immissioni, giusto con n e min come sta già facendo.

L'idea di preimpostare min con INT_MAX come ha detto nessuno funziona.

In alternativa, si può fare in modo che il primo valore immesso venga subito accettato come quello minimo (essendo il primo, non c'è ancora niente con cui confrontarlo) e copiato in min. Ai passaggi successivi si può fare min = n<min ? n : min; (che equivale a "if(n<min) min=n; else min=min;").

Per uscire dal ciclo può essere comodo usare break quando si incontra n<=0 subito dopo l'immissione (prima di effettuare qualsiasi confronto con min).


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 21:57
Martedì, 13/08/2019
Testo quotato

Postato originariamente da AldoBaldo:

In alternativa, si può fare in modo che il primo valore immesso venga subito accettato come quello minimo (essendo il primo, non c'è ancora niente con cui confrontarlo) e copiato in min. Ai passaggi successivi si può fare min = n<min ? n : min; (che equivale a "if(n<min) min=n; else min=min;").



Tutto dipende essenzialmente dai valori accettati, Se non accetta valori negativi, ed il primo valore è negativo, questo ragionamento non fila. Ma se accetta valori negativi, non si può uscire dal ciclo con n<=0 .

bisogna conoscere bene il testo.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo