Problema vettori

di Anonimizzato7589 il
11 risposte
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

  • 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.
  • 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
  • Crea un vettore di strutture dove ci metti anche l'aumento.
  • 1 aiutino in piu??
  • 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();
             }
             
  • E se avessi + venditori che fai? un if-else enorme?
  • A sto punto...non saprei allora..
  • 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.
  • 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...
  • 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]++;
        }
                
    }
    
  • 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