Programma non funziona

di Anonimizzato30780 il
9 risposte
Ciao a tutti! Premetto che sono alle prime armi.
Sto programmando in c un programma che prenda in input 50 numeri e indichi il maggiore ed il minore tra i 50 e la rispettiva posizione del numero maggiore e minore.
Per trovare il maggiore e minore non ho avuto problemi, ma non so come farmi dire la posizione di questi. Ho pensato a mettere tutti i numeri di input in un vettore e poi verificare quale numero era in quale posizione..non so. Se qualcuno può aiutarmi ne sarei felice, grazie in anticipo!

9 Risposte

  • Se posti il codice per il minimo e massimo ti accorgi facilmente come trovare la posizione
  • oregon ha scritto:


    Se posti il codice per il minimo e massimo ti accorgi facilmente come trovare la posizione
    In realtà non so proprio. Ho pensato di fare un ciclo che mi leggesse tutti i valori nel vettore e si fermasse quando trova il valore che cerco. Potrei mettere una variabile (es i) che si incrementa di 1 ad ogni "volta". Quando la condizione sarà verificata allora il programma esce dal ciclo ed il valore di i sarà la mia posizione, no?
    Tipo (tralascio alcuni comandi)

    Int main(){
    Int i;
    Int num; //valore che cerco
    Int vettore[5];
    Int num2; //variabile dei 5 numeri del vettore

    (A questo punto un ciclo for facendomi dare i 5 numeri dall'utente che penso sia il seguente)

    for(i=0; i<5; i=i+1){
    scanf("%d", &vettore); }

    (Poi penso un altro for, poi metto un if con condizione num2=num e poi un printf di i?)

    Scusa non so se abbia senso..
  • Quando trovi il minimo o il massimo è proprio la variabile del ciclo che ti indica la posizione. È semplice, prova solo a trovare min e max
  • oregon ha scritto:


    Quando trovi il minimo o il massimo è proprio la variabile del ciclo che ti indica la posizione. È semplice, prova solo a trovare min e max
    Per trovare minimo e massimo ho pensato di fare cosi:
    #include <stdio.h>
    #include <stdlib.h>

    int vettore[20];
    int numero;
    int max;
    int min;
    int i;

    int main(){

    for(numero=0; numero<20; numero++){
    printf("Inserisci il %d numero. ", numero+1);
    scanf("%d", &vettore[numero]);
    if(numero==0){
    max=vettore[numero];}
    if(vettore[numero]>max){
    max=vettore[numero];}


    if(numero==0){
    min=vettore[numero];}
    if(vettore[numero]<min){
    min=vettore[numero];}
    }
    printf("\nIl numero massimo e\' %d ", max);
    printf("\nIl numero minimo e\' %d ", min);
    }

    E funziona, ma per trovare la posizione nel vettore proprio non so
  • Usa i tag CODE per il codice nel forum.

    Quando scrivi
    
    if(numero==0){
    max=vettore[numero];}
    
    perché lo ripeti per il minimo? Ti basta una if e la posizione la puoi memorizzare in due variabili quindi
    
    if(numero==0)
    {
       min=max=vettore[numero];
       pmin=pmax=numero;
    }
    
    Come devi fare negli altri casi? Fallo tu ...
  • Si scusa, sono un po' ignorante. Per l'if, lo ho fatto due volte per chiarezza visiva dato che mi ci sto scervellando. Comunque grazie, hai ragione.
    Comunque in che senso negli altri casi?
  • Per le altre if
  • 
         	 for(numero=0; numero<20; numero++){
             printf("Inserisci il %d numero.  ", numero+1);
    		 scanf("%d", &vettore[numero]);
    		 if(numero==0){
    		 	max=min=vettore[numero];
    			 posmax=posmin=numero;}
    		 if(vettore[numero]>max){
    		 	max=vettore[numero];
    			 posmax=numero;}
    		 if(vettore[numero]<min){
    		 	min=vettore[numero];
    			 posmin=numero;}
    		 }
    			 printf("\nIl numero massimo e\' %d  ", max);
    			 printf("\nIl numero minimo e\' %d  ", min);
    			 printf("\nLa posizione del numero massimo e\' %d", posmax+1);
    			 printf("\nLa posizione del numero minimo e\' %d", posmin+1);
    				 }
    		}
    
    Così ha senso?
  • Lo hai provato?
Devi accedere o registrarti per scrivere nel forum
9 risposte