[C]problema dei 2 numeri maggiori

  • Autore discussione Autore discussione computer7
  • Data d'inizio Data d'inizio
Pubblicità
C

computer7

Ospite
"scrivere l'implementazione in C del seguente problema: richiedere all'utente 10 numeri e stampare i 2 maggiori"

Sembra un problema idiota ma non arrivo a fare stampare il 2ndo numero + grande. qualcuno potrebbe darmi una mano?
il prima possibile carico il codice che ora non ho con me...
Grazie!:sisi:
 
Ciao!
Carica il tutto in un vettore di 10 interi e poi fai l'ordinamento per confronto.. In quel caso poi fai stampare a video il primo (o ultimo) elemento ed il secondo (penultimo)

nb: quello tra parentesi è inteso come ordinamento crescente

Carica il codice e poi vediamo! ;)
 
ciao! intanto ti ringrazio perchè sei l'unico che finora mi ha risposto:ok: comunque io non ho ancora affrontato i vettori e quindi non so come usarli! :( cmq carico il codice così vediamo se riesci comunque a darmi una mano....
/*----------------------------------------------------------------------------
max1_2: programma costituito da un'unica funzione che chiede 10 volte
all'utente un numero(che deve essere ogni volta diverso),e restituisce
i due valori maggiori


INPUT:
x: valore della variabile che contiene il valore inserito
OUTPUT:
max1, max2: variabili che contengono il valore maggiore tra +
quelli inseriti
-----------------------------------------------------------------------------*/
#include<stdio.h>
#include<conio.h>
int main(void){
int x,max1=0,max2=0,i;


for(i=1;i<=10;i++){
printf("Inserisci un numero ");
scanf("%d",&x);


if(i%2!=0){
if(x>max1){
max1=x;
}
}
if(i%2==0){
if(x>max2){
max2=x;
}
}//fine if
}//fine for
printf("I 2 numeri piu' grandi sono: %d %d",max1, max2);
getch();
return 0;
}//fine main


il problema di questo algoritmo è che,nel caso in cui io metta numeri sempre + grandi nelle posizioni pari(oppure quelle dispari) non riesce a individuarmi il secondo + grande! nn so se sono riuscito a farmi capire,x cmq se hai una soluzione senza uso dei vettori ti ringrazio!
 
Codice:
//...
int max1, max2, num, i;


printf("Dammi un numero ");
scanf("%d", &max1);
printf("Dammi un numero ");
scanf("%d", &max2);
for(i = 0; i < 8; i++) {
	printf("Dammi un numero ");
	scanf("%d", &num);
	if(num > max1) {
		if(max1 > max2) {
			max2 = max1; max1 = num;
		else max1 = num;
	else if(num > max2) max2 = num;
}

Non l' ho testato ma dovrebbe andare
 
Te l'ho fatto col vettore cosi da anticiparti il tutto quando li tratterai..
Codice:
#include "stdio.h"
#include "stdlib.h"


int main()
{
    const int N=10;     //Numero elementi da inserire, modificando questo non c'è bisogno di modificare il #di elementi dopo!
    int vett[10];      //dichiari un vettore di 10 interi

    int i;              //variabile per il ciclo
    
    
    for(i=0;i<N;i++) // caricamento vettore tramite ciclo for
    {
        printf("inserisci il numero:");
        scanf("%d",&vett[i]); //inserimento direttamente nel vettore tramite il proprio indice i
    }
    
    printf("\n\n\n\n");    //spazio per schermo xD

    int var,q,j;        //var= appiglio per trasferire momentaneamente il valore da spostare
    for(q=0;q<N;q++) // ordinamento vettore
    {
        for(j=0;j<N-1-q;j++)    //ciclo che termina nella cella prima di q in modo da poter confrontare
        {
            if(vett[j]>vett[j+1])  //se il numero in posizione j è piu grande del successivo
            {
                var=vett[j];   // var assume il valore del numero contenuto in j
                vett[j]=vett[j+1]; //Ad j viene assegnato il contenuto della cella successiva (j+1)
                vett[j+1]=var;  //e inserisco il valore di var cosi da ordinare
            }
        }
    }

        printf("%d - ",vett[N-2]);   //qua rudimentalmente ti ho mandato in stampa il penultimo numero
        printf("%d - ",vett[N-1]);    // e l'ultimo...     NB: -2 e -1 perchè si va da 0 a 9 --> ultimo num = cella 9 ; penultimo cella 8
        
    system("PAUSE");
    return 0;
}
 
Pubblicità
Pubblicità
Indietro
Top