Programma su struct

di il
37 risposte

37 Risposte - Pagina 2

  • Re: Programma su struct

    oregon ha scritto:


    Eppure è semplice ... dove hai l'informazione che ci sono stati solo 3 input?

    se ci sono stati solo 3 input l informazione ce l ho sul primo , quindi a N-3 se incomincio a contare da i=0 , giusto?
  • Re: Programma su struct

    Sul "primo" cosa?

    NO ... N-3 se N è 100 fa 97 ....!

    L'informazione l'hai nella variabile contatore del primo for quando esci dal for !
  • Re: Programma su struct

    oregon ha scritto:


    Sul "primo" cosa?

    NO ... N-3 se N è 100 fa 97 ....!

    L'informazione l'hai nella variabile contatore del primo for quando esci dal for !

    quindi nel momento in cui io esco dal for , la variabile ' i ' ha un valore, ed e proprio quel valore che devo sottrarre per operare solo con i numeri messi in input...
  • Re: Programma su struct

    No sottrarre!

    E' proprio quel valore che devi usare come fine ciclo !

    Andiamo ... se i vale 3 devi contare con un'altra variabile da 0 a 2 ... quindi

    for(j=0; j<i; j++)

    Attento perché i all'uscita può essere già stata incrementata e allora dovrai scrivere

    for(j=0; j<i-1; j++)
  • Re: Programma su struct

    [quote="oregon"][/quote]
    non funge lo stesso
  • Re: Programma su struct

    E con questa semplice frase ("non funge") pensi che ti possa dire cosa non va?

    Che dici di mostrare il codice che hai modificato?
  • Re: Programma su struct

    oregon ha scritto:


    E con questa semplice frase ("non funge") pensi che ti possa dire cosa non va?

    Che dici di mostrare il codice che hai modificato?
    struct offerte
    {
    int codice;
    char regione[15];
    char nome[10];
    char codicef[15];
    float offerta;
    int giorno;
    int mese;
    int anno;
    };
    main()
    {
    int n,i;
    int num;
    printf("quante offerte vuoi inserire?:");
    scanf("%d",&n);
    struct offerte fornitori[n];
    for(i=0;i<n;i++){
                     
                     printf("inserisci %d nome :",i);
                     scanf("%s",fornitori[i].nome);
                     
                     printf("inserisci %d offerta:",i);
                    
                     scanf("%f",&fornitori[i].offerta);
                    
                     printf("\n");
                     printf("inserisci 0 per terminare, 1 per continuare :");
                     scanf("%d",&num);
                     if(num==0)
                                break;
                                printf("\n");
                                
                               
                     }
                     
                     float t;
    int j;
    for (i = 0; i<n; i++) {
          for(j=0;j<i+1;j++){
             if (fornitori[j].offerta>fornitori[j+1].offerta) {
                t=fornitori[j].offerta;
                fornitori[j].offerta=fornitori[j+1].offerta;
                fornitori[j+1].offerta=t;
             }
          }
       
    }
     printf("l'offerta migliore e' di  %.2f euro\n",fornitori[0].offerta);
    
  • Re: Programma su struct

    Non ci capiamo ... non devi usare n per terminare le for !!

    Facciamo una cosa ... cambia le variabili per gli indici dell'ordinamento ... ad esempio usa

    k, m

    A questo punto, nelle due for al posto di n usa i ...
  • Re: Programma su struct

    [quote="oregon"][/quote]
    ci sono! ho capito ora! ora ti spiego cosi per verificare:
    praticamente nel momento in cui esco dal ciclo la variabile " i " ha un valore che varia a seconda di quante offerte ho messo, quindi se per esempio ho messo 4 offerte i varra 4, di conseguenza quella " i " la dovro andare a sostituire , come hai detto te, nei due for , perche e come se in quel caso fungesse da " n" con l unica differenza che invece di avere il valore " 100" ha valore " 4", giusto?
  • Re: Programma su struct

    Sì, adesso va bene ... era difficile?
  • Re: Programma su struct

    oregon ha scritto:


    Sì, adesso va bene ... era difficile?

    non ci ero arrivato , ma effettivamente non era cosi difficile, ora correggo il codice , grazie
  • Re: Programma su struct

    [quote="oregon"][/quote]
    ho corretto ma mi da sempre il primo carattere, come se non ordinasse, forse e sbagliato il bubble questa volta:
    
    
    main()
    {
    int n,i;
    int num;
    printf("quante offerte vuoi inserire?:");
    scanf("%d",&n);
    struct offerte fornitori[n];
    for(i=0;i<n;i++){
                     
                     printf("inserisci %d nome :",i);
                     scanf("%s",fornitori[i].nome);
                     
                     printf("inserisci %d offerta:",i);
                    
                     scanf("%f",&fornitori[i].offerta);
                    
                     printf("\n");
                     printf("inserisci 0 per terminare, 1 per continuare :");
                     scanf("%d",&num);
                     if(num==0)
                                break;
                                printf("\n");
                                
                               
                     }
                     
                     float t;
                     int j,k;
                     
    for(k = 0; k <i-1; k++) {
          for(j = i+1; j<i;j++) {
             if(fornitori[i].offerta >fornitori[j].offerta) {
                t = fornitori[i].offerta;
                fornitori[i].offerta = fornitori[j].offerta;
                fornitori[j].offerta = t;
             }
          }
       }
     printf("l'offerta migliore e' di  %.2f euro\n",fornitori[0].offerta);
    
     system("PAUSE");
     return 0;
                     }
  • Re: Programma su struct

    Fai attenzione ... Se usi k devi usarla anche negli indici ... invece hai lasciato i
  • Re: Programma su struct

    "oregon"]Fai attenzione ... Se usi k devi usarla anche negli indici ... invece hai lasciato i
    ho corretto ma mi da sempre problemi...
     main()
    {
    int n,i;
    int num;
    printf("quante offerte vuoi inserire?:");
    scanf("%d",&n);
    struct offerte fornitori[n];
    for(i=0;i<n;i++){
                     
                     printf("inserisci %d nome :",i);
                     scanf("%s",fornitori[i].nome);
                     
                     printf("inserisci %d offerta:",i);
                    
                     scanf("%f",&fornitori[i].offerta);
                    
                     printf("\n");
                     printf("inserisci 0 per terminare, 1 per continuare :");
                     scanf("%d",&num);
                     if(num==0)
                                break;
                                printf("\n");
                                
                               
                     }
                     
                     float t;
                     int j,k;
                     
    for(k = 0; k <i-1; k++) {
          for(j = 0; j<i-k-1;j++) {
             if(fornitori[k].offerta >fornitori[k+1].offerta) {
                t = fornitori[k].offerta;
                fornitori[k].offerta = fornitori[k+1].offerta;
                fornitori[k+1].offerta = t;
             }
          }
       }
     printf("l'offerta migliore e' di  %.2f euro\n",fornitori[0].offerta);
  • Re: Programma su struct

    
    	for(k = 0; k<i; k++) 
    		for(j = 0; j<i-k; j++) 
    			if(fornitori[j].offerta >fornitori[j+1].offerta) 
    			{
    				t = fornitori[j].offerta;
    				fornitori[j].offerta = fornitori[j+1].offerta;
    				fornitori[j+1].offerta = t;
    			}
    
Devi accedere o registrarti per scrivere nel forum
37 risposte