Problema vettori

di il
11 risposte

Problema vettori

Non so come iniziare questo programma, mi si richiede:

Un venditore riceve 200$ la settimana piu il 9% delle proprie vendite lorde, scrivere un programma in c, utilizzando un vettore di contatori che determini quanti venditori abbiano guadagnato una retribuzione compresa tra :

1 200-299
2 300-399
3 400 -499
4...
9...

Non mi è chiaro il procedimento, cioè, io ho pensato, di inizializzare con le vendite lorde un vettore di 10 elementi, trovarne il netto con la formula ((n*9)/100)+200...cioè:



#include <stdio.h>

int retribuzionifinali(int[], int);

main()

{
      int vendita[10], x, aumento, netto;
      
      
      for(x = 0; x < 10; x++)
      
      printf("Inserisci i valori delle vendite lorde: ");
      scanf("%d", vendite);
      
      for(y = 0; y < 10; y++){
        
         netto = ((vendita[y] * 9) \ 100) + 200;
         
      aumento = retribuzionifinali(int[netto], int);
      
      printf("Venditore %d-%d€: %d\n\n", 
solo però, facendo una chiamata di funzione per ogni valore letto dal vettore, e restituendolo al chiamante come incremento del risultato, viene un esercizio troppo lungo secondo me...e non capisco l'utilità dei vettori in questo senso..la domanda è, posso utilizzare un algoritmo che possa controllare una serie di valori compresi tra un min e un max, direttamente nell'inizializzazione del vettore?

11 Risposte

  • Re: Problema vettori

    Metti il codice completo così non si capisce niente.retribuzionifinali accetta un vettore tu li passi un int. Quindi il tuo codice così esposto non è compilabile.
  • Re: Problema vettori

    Si ok, non l'ho finito perchè mi annoiavo, cercavo di trovare una soluzione piu efficiente in pratica:
    
    
    #include <stdio.h>
    
    int retribuzionifinali(int[], int);
    
    main()
    
    {
          int vendita[10], x, aumento, netto, num1, num2, y;
          
          
          for(x = 0; x < 10; x++)
          
          printf("Inserisci i valori delle vendite lorde: ");
          scanf("%d", vendita);
          
          for(y = 0; y < 2; y++){
            
             netto = ((vendita[y] * 9) / 100) + 200;
             
          aumento = retribuzionifinali(int[netto], int);
          
          if(aumento == 1)
          
          num1++;
          
          else
          
          if(aumento == 2)
          
          num2++;
          
          /*ecc...*/
          }
          printf("Venditore 1(200-299: %d\n\n", num1);
          printf("Venditore 2(300-399: %d\n\n", num2);
          /*ecc....*/
         return 0;
          }
          
          int retribuzionifinali(int a[], int 2){
              
              int x;
              
              for(x = 0; x < 2; x++){
              
              if(a[x] < 299)
              
              return 1;
              
              else
              
                  if(a[x] < 399)
                  
                  return 2;
                  
              /*ecc...*/
              
              }
    
    pensavo una cosa cosi...come soluzione
  • Re: Problema vettori

    Crea un vettore di strutture dove ci metti anche l'aumento.
  • Re: Problema vettori

    1 aiutino in piu??
  • Re: Problema vettori

    Soluzione trovata sky...ora ci sarà sicuramente qualche errore di 1, ma ho risolto..
    
    
    #include <stdio.h>
    #include <conio.h>
    
    main()
    
    {
          int netto[2], venditelorde, x, y, calcolonetto, z;
          
          for(x = 0; x < 3; x++){
                
             printf("Inserisci il valore delle vendite lorde settimanali: \n");
             scanf("%d", &venditelorde);
             
             calcolonetto = ((venditelorde * 9) / 100) + 200;
             
             netto[x] = calcolonetto;
             
             }
             
          int frequenza[2] = {0};
          
          for(y = 0; y < 3; y++){
                
             if(netto[y] < 299)
             
               frequenza[y] += 1;
             
          else
             
             if(netto[y] < 399)
                 
             frequenza[y] += 1;
             
             }
             
          for(z = 0; z < 2; z++)
          
             printf("\n\nVenditore[%d] = %d", z, frequenza[z]);
             
             getch();
             }
             
  • Re: Problema vettori

    E se avessi + venditori che fai? un if-else enorme?
  • Re: Problema vettori

    A sto punto...non saprei allora..
  • Re: Problema vettori

    Guarda la ricorrenza:
    
    1 200-299
    2 300-399
    3 400 -499
    
    frequenza = ((i+1)*100) + 200;

    Quindi avendo un guadagno tu sai a quale frequenza il venditore farà parte. che sarà dato dall'equazione:

    (guadagno - 200) / 100.

    con un for assegni ogni venditore nella frequanza giusta.
  • Re: Problema vettori

    Scusa sky, ma tra lavoro e programmazione sto sbroccando, dunque, stando alla tua equazione coi vettori ho generato questo codice:
    
    
    #include <stdio.h>
    
    main()
    {
    
        int netto[9], venditelorde,x , y, calcolonetto, tot, frequenza;
    
    for(x = 0; x <10; x++){
    
       printf("Inserisci il valore delle vendite lorde settimanali: ");
       scanf("%d", &venditelorde);
    
       calcolonetto = ((venditelorde * 9)/100) + 200);
       netto[x] = calcolonetto;
    }
    
    for(z = 0; z < 9; z++){
    
        frequenza[z] = ((z+1)*100)+200;
    
        frequenza[(netto[i]-200)/100] = tot += 1;
    }
    
    
    ma non so se sia corretto...
  • Re: Problema vettori

    Cos'è sta roba
    
    frequenza[(netto[i]-200)/100] = tot += 1;
    
    prova questo:
    
        #include <stdio.h>
    
    int    main()
        {
    
    		int netto[9], venditelorde,x , z, calcolonetto, frequenza[9] = {0};
    
        for(x = 0; x <10; x++){
    
           printf("Inserisci il valore delle vendite lorde settimanali: ");
           scanf("%d", &venditelorde);
    
           calcolonetto = ((venditelorde * 9)/100) + 200;
           netto[x] = calcolonetto;
        }
    
        for(z = 0; z < 9; z++){
    
            frequenza[(netto[z] - 200) / 100]++;
        }
                
    }
    
  • Re: Problema vettori

    Si...scusami sky, è che devo prenderci mano con i vettori...comunque ho capito...l'incremento del venditore è direttamente nella sequenza del vettore, inizializzato dall'equazione...solo devo prenderci confidenza col vettore, ancora un grazie sky!! se avrò problemi posterò ancora...
Devi accedere o registrarti per scrivere nel forum
11 risposte