fenice (Normal User)
Newbie
Messaggi: 19
Iscritto: 10/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++ |
#include<stdio.h>
#include<conio.h>
#include<windows.h>
main()
{
int n,min;
while(n>0) {
printf("Inserisci un numero\n");
scanf("%d",&n);
if(n>0&&(min=0||n<min))
min=n;}
printf("Il minimo e' %d\n", min);
getch();
}
|
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6386
Iscritto: 03/01/2010
|
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à. |
|
fenice (Normal User)
Newbie
Messaggi: 19
Iscritto: 10/08/2019
|
Ho provato a scriverlo anche con il ciclo for però la condizione di uscita è sbagliata secondo me.
Codice sorgente - presumibilmente C/C++ |
#include<stdio.h>
#include<conio.h>
#include<windows.h>
main()
{
int n=1,min=INT_MAX;
for(n=1;n<=0;n++)
{ printf("Inserisci un numero\n");
scanf("%d",&n);
if(n>0&&n<min)
min=n;}
printf("Il minimo e' %d\n", min);
getch();
}
|
|
|
Mikelius (Member)
Expert
Messaggi: 525
Iscritto: 14/04/2017
|
Scusa, ma il numero minore rispetto a cosa?
|
|
fenice (Normal User)
Newbie
Messaggi: 19
Iscritto: 10/08/2019
|
Trovare il numero più piccolo della sequenza
|
|
fenice (Normal User)
Newbie
Messaggi: 19
Iscritto: 10/08/2019
|
Trovare il numero più piccolo della sequenza
|
|
Mikelius (Member)
Expert
Messaggi: 525
Iscritto: 14/04/2017
|
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!
|
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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. |
|
Mikelius (Member)
Expert
Messaggi: 525
Iscritto: 14/04/2017
|
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. |
|