Salve!
Ho questa parte di esame che mi chiede:
Definisca la funzione CaricaDatiParti che riceve in ingresso il numero di articoli che l’ingegnere assemblatore vuole caricare (chiesto nel main e passato in ingresso alla funzione), li faccia inserire leggendoli da tastiera e li memorizzi nel vettore ElencoParti restituendo, alla fine, la % di parti in acciaio e la % di parti kevlar. Il sistema deve stampare, a fine caricamento, il numero di teste, tronchi, braccia e gambe caricate nel magazzino.
Ho scritto la funzione ed il main, il problema è che qualunque valore inserisca mi stampa sempre che la percentuale di parti kevlar è zero.
Domani ho l'esame, aiuto!
Questo è quello che ho scritto io:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#define DIM 200
#define SIZE 25
typedef struct
{
char matricola [SIZE];
char disponibile;
char stato [SIZE];
char categoria [SIZE];
char materiale [SIZE];
} Magazzino;
Magazzino ElencoParti [DIM];
float CaricaDatiParti (int);
void AssemblaDrone (int, char []);
void StampaDisponibili (int);
int main()
{
int num_parti;
float p_kevlar;
char materiale[SIZE];
printf ("\nInserire numero di parti da caricare:\n");
scanf ("%d", &num_parti);
p_kevlar = CaricaDatiParti( num_parti );
printf ("\nPERCENTUALE PARTI KEVLAR:\t%.2f\n", p_kevlar);
printf ("\nPERCENTUALE PARTI ACCIAIO:\t%.2f\n", 100 - p_kevlar);
printf ("\nScegliere materiale drone ( kevlar/acciaio ): ");
scanf ("%s", materiale);
AssemblaDrone (num_parti, materiale);
StampaDisponibili (num_parti);
system("PAUSE");
return 0;
}
float CaricaDatiParti( int num_parti )
{
int i, num_testa = 0, num_tronco = 0, num_braccia = 0, num_gambe = 0, num_kevlar =0, num_acciaio=0;
float percentuale;
for ( i = 0; i < num_parti; i++)
{
printf ("\n\n\tARTICOLO NUMERO %d:\n", i+1);
printf ("\nMatricola: ");
scanf ("%s", ElencoParti[i].matricola);
printf ("\nDisponibilita\' ( s / n ): ");
ElencoParti[i].disponibile = getch ();
printf ("\n\nStato ( nuovo / usato ): ");
scanf ("%s", ElencoParti[i].stato);
printf ("\nCategoria ( testa / tronco / braccia / gambe ): ");
scanf ("%s", ElencoParti[i].categoria);
printf ("\nMateriale ( kevlar/acciaio ): ");
scanf ("%s", ElencoParti[i].materiale);
if ((strcmp (ElencoParti[i].materiale, "kevlar"))== 0) num_kevlar++;
if ((strcmp (ElencoParti[i].materiale, "acciaio"))== 0) num_acciaio++;
if ((strcmp (ElencoParti[i].categoria, "testa"))== 0) num_testa++;
else if ((strcmp (ElencoParti[i].categoria, "tronco"))== 0) num_tronco++;
else if ((strcmp (ElencoParti[i].categoria, "braccia"))== 0) num_braccia++;
else if ((strcmp (ElencoParti[i].categoria, "gambe"))== 0) num_gambe++;
}
percentuale = (float) 100*((num_kevlar/num_parti));
printf ("\nNUMERO testa: %d", num_testa);
printf ("\nNUMERO tronco: %d", num_tronco);
printf ("\nNUMERO braccia: %d", num_braccia);
printf ("\nNUMERO gambe: %d", num_gambe);
return percentuale;
}
Grazie per l'attenzione.