Esercizio sugli array

di il
2 risposte

Esercizio sugli array

Salve a tutti,
sono una studentessa e mi hanno assegnato un compito sugli array ma non riesco a capire come fare alcune parti..
ora metto sia il testo sia il pezzo che io ho già scritto se potete darmi un aiutino per favore.


Dati in input il nome, cognome del cliente, la descrizione del lavoro che fa e il numero di ore di manodopera effettuate;
creo una funzione che non si troverà nel menù, dove calcolerò tutto l'importo totale comprensivo di iva (facendo le ore lavorate a seconda
del lavoro per la percentuale di iva) calcolato l'importo tramite passaggi di parametri lo richiamo nelle varie funzioni dove richiamato.
poi faccio iun menù per tutte le funzioni richieste*/
//inserisco le librerie
#include<iostream>
#include<stdio.h>
#include<math.h>

//inserisco le variabili
struct s_autoriparazioni
{
char cogn[15];
char citta[15];
int nore;
char desc;

};
typedef struct s_autoriparazioni rip;
int i;


//effettuo la carica dell'array con tutti i parametri richiesti
void carica(rip tab[],int *dim)
{
printf("Salve,ora inserisca la quantita' di clienti a cui deve fare la fattura: ");
scanf("%d",&*dim);

for(i=0;i<*dim;i++)
{

printf("Salve, inserisca il cognome del %d^ cliente: ",(i+1));
scanf("%s", &tab.cogn);
printf("Ora inserisca la citta' del cliente %s: \n",tab.cogn);
scanf("%s", &tab.citta);
printf("Ora cortesemente, inserisca le ore di lavoro effettuate: \n");
scanf("%d",&tab.nore);
do
{
printf("\nInfine inserisca il tipo di lavoro che ha effettuato(R=revisione,M=manuntenzione,V=vernicaitura): ");
scanf("%c", &tab.desc);
tab.desc= (char)toupper(tab.desc);
}
while(tab.desc!='R' && tab.desc!='M' && tab.desc!='V');
}
printf("Carica completata\n");
}
//creo una funzione che mi calcoli l'importo totale, senza pero' essere memorizzata nel main,
// in questo modo qunado avrò bisogno dell'importo dovrò richiamare la funzione
float impot(int nore,char desc)
{
float impot=0;
const float PZR=20.00;
const float PZM=25.00;
const float PZV=30.00;
const float ImpoI=0.22;
if(desc=='R')
{
impot=(nore*PZR);
}
else{
if(desc=='M')
{
impot=nore*PZM;
}
else{
if(desc=='V')
impot=nore*PZV;
}
}
impot=impot+ImpoI;
return impot;
}
//visualizzazione dell'array mettendo le fatture in ordine decrescente di importo,
//prendendo quest'ultimo con passaggio di parametri dalla funzione impotot
void vis_tt(rip tab[],int dim)
{
rip temp;
int j;

for(i=0;i<dim;i++)
{
for(j=i-1;j<dim;j++)
{
if(impot(tab[i].nore,tab[i].desc)>impot(tab[i].nore,tab[i].desc))
{
temp=tab[i];
tab[i]=tab[j];
tab[j]=temp;
}
}
printf("\nIl Sig./Sig.ra %s, residente nella citta' di %s\n",tab[i].cogn);
("\nSvolge il lavoro di(R=revisione,M=manuntenzione,V=verniciatura): %c\n",tab[i].desc);
("\n ed ha lavorato per %d ore di manodopera\n",tab[i].nore);

}
}
//in questa funzione farà vedere tutte le fatture con l'importo totale compreso a due cifre scelte dall'utente
void fatt_comp(rip tab[],int dim)
{
float sogl1,sogl2;
printf("Salve inserisca la cifra che l'importo che cerca dovra' sicuramente superare: ");
scanf("%f",&sogl1);
printf("Ora inserisca la cifra che l'importo che sta cercando, non dovra' superare: ");
scanf("%f",&sogl2);
for(i=0;i<dim;i++)
{
if(impot(nore,desc)>sogl1 && impot(nore,desc)<sogl2)
{
printf("le fatture da lei richieste sono: ",tab[i]);
}
}
}/**/
//Questa funzione troverà l'importo massimo con tutte le sue informazioni, e l'importo minimo con tutte le sue imformazioni
/*void max_min(rip vet[],int dim)
{

}*/
//Questa funzione farà un riepilogo generale di tutte le fatture, poi troverà l'importo totale(gli importi di tutte òe fatture sommati tra loro)
//e l'importo medio(l'iporto di tutte le fatture fratto il numero di fatture
//ed infine troverà la quantità di lavori svolti in base alla descrizione(uso di contatori);
/*void riepilogo(rip vet[],int dim)
{

}*/
//farò la ricerca dicotomica per cercare la città di residenza della persona, (città chesta dall'utente)
//quindi dovrò mettere prima in ordine alfabetico le città di residenza;
int ric_dic(rip vet[],int dim)
{
rip temp;
int j;
char cit[15[;
int sx,pos,dx,med;
for(i=0;i<dim;i++)
{
for(j=i-1;j<dim;j++)
{
if(strcmp(tab[i].citta, tab[j].citta)>0)
{
temp=tab[i];
tab[i]=tab[j];
tab[j]=temp;
}
}
}
printf(Salve, inserisca la citta' di resideza del cliente che vuole cercare: ");
scanf("%s",&cit);
pos=-1;
sx=0;
dx=dim-1;
while(sx<dx && pos==-1)
{
med=(sx+dx)/2;
if(nome==tab[med].nome)
{
pos=med;
}
else
if(nome==tab[sx].nome)
{
pos=sx;
}
else
if(
nome==tab[dx].nome)
{
pos=dx;
}
else
if(nome==tab[med].nome)
{
sx=med+1;
}
else
dx=med-1;
}
return pos;
}

main()
{
rip num[15];
int n;

system("color f0");
system("title es recupero");
carica(num,&n);
char scelta;
int pos;
float impotot;
printf("\n\nSalve,benvenuto nel programma che crea un SW per il calcolo delle fatture\n");
do
{
printf("1-Visualizza tutto l'elenco ordinato per imprto decrescente\n"
"2-fatture comprese tra due importi inseriti a sua scelta\n"
"3-ricerca la fattura con importo massimo e quella con importo minimo\n"
"4-riepilogo di tutta la fattura\n"
"5-ricerca dicotomica in base alla citta' del cliente desiderato\n"
"6-RICERCA A MIA SCELTA\n\n");
printf("\n\nFaccia la sua scelta: ");
scanf("%c", &scelta);
switch(scelta)
{
case '1': vis_tt(num,n);
break;
case '2': fatt_comp(num,n);
break;
/* case '3': max_min(num,n);
break;
*/ case '4': riepilogo(num,n);
break;
case '5': ric_dic(num,n);
printf("%d",pos);
break;
//case '6':
// break;
case '0': printf("grazie per aver usato il nostro programma\n");
break;
default: printf("errore\n");
break;
}
}
while(scelta!='0');
system("pause\n");

}

2 Risposte

  • Re: Esercizio sugli array

    La domanda qual è?
  • Re: Esercizio sugli array

    Ciao Sheila,
    ho visto che hai inserito un altro post molto simile, l'ho cancellato in quanto questo thread è ancora aperto.
    Hai postato il tuo codice ma non hai detto dove incontri le difficoltà o quale è il problema che non riesci a risolvere
Devi accedere o registrarti per scrivere nel forum
2 risposte