Problema di "traduzione" del programma scritto

Messaggioda Eugvr93 » 30/08/2014, 19:55

Ragazzi ho un problema, mi potreste spiegare come funziona questo codice passo passo? Sto uscendo pazzo e a breve avrò l'esame!!! Vi sarei davvero grato.

ecco il codice:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct ricambio{
int num;
char*nome;
struct ricambio* next;
};

typedef struct ricambio ricambio;


ricambio* aggiungi(int A, char* string, ricambio* Punt){
ricambio* NEW;
NEW=(ricambio*)malloc(sizeof(ricambio));
NEW->num=A;
NEW->nome=string;
NEW->next=Punt;
return NEW;
}


ricambio* cancella(ricambio* Punt, char* string){

ricambio* copy;
if(Punt==NULL){
return NULL;
if(strcmp(Punt->nome,string)==0){
copy=Punt;
Punt=Punt->next;
free(copy);
return Punt;
}

else if(strcmp(Punt->next->nome,string)==0){
copy=Punt->next->next;
free(Punt->next);
Punt->next=copy;
return Punt;
}

else{
cancella(Punt->next,string);
}
}


void ricerca(char*string,ricambio*Punt){
if(Punt==NULL){
return;
}
if(Punt!=NULL){
if(strcmp(Punt->nome,string)==0){
printf("Ricambio %s: pezzi
disponibili %d\n",Punt->nome,Punt->num);
}
else{
ricerca(string,Punt->next);
}
}


void mostra(ricambio*Punt){
int x=0;
int y=0;
while(Punt!=NULL){
printf("%s,%d\n",Punt->nome,Punt->num);
if(Punt->num!=0){
y=y+Punt->num;
Punt=Punt->next;
x++;
}
}
printf("Tipi di ricambi:%d\tTotale ricambi:%d",x,y);
}


void prelievo(ricambio*Punt,char*string,int z){

if(Punt==NULL){
return;
}
if(Punt!=NULL){
if(strcmp(Punt->nome,string)==0){
Punt->num=Punt->num-z;
printf("Ricambio %s: pezzi
disponibili %d\n",Punt->nome,Punt->num);
}
else{
prelievo(Punt->next,string,z);
}
}

ricambio* canc(ricambio*Punt){

ricambio* copy=Punt->next;
free(Punt);
canc(copy);

if(copy==NULL)return copy;
}

ricambio*load(ricambio*M){
char*W;
int N;
ricambio*L;
FILE*F=fopen("text.txt","R");
while(fscanf(F,%s,W)!=EOF){
L=(ricambio*)malloc(sizeof(ricambio));
W=(char*)malloc(sizeof(char)*30);
L->nome=fscanf(F,"%s",&W[0]);
L->num=fscanf(F,"%d",&N);
L->next=M;
M=L;
}
FCLOSE(F);
return L;
}



void save(ricambio*Punt){
FILE*F=fopen("text.txt","W");
if(Punt==NULL)return;
while(Punt!=NULL){
fprintf(F,"%s\n%d\n",Punt->nome,Punt->num);
Punt=Punt->next;
}
fclose(F);
}

int main(int argc,char**argv){
int choise,C;
ricambio* B;
char* D;
D=(char*)malloc(sizeof(char)*30);
printf("Scegli:\n");
scanf("%d", &choise);
while(choise!=9){
switch(choise){
case 1:
Printf("Inserire nome del nuovo ricambio e le unità disponibili\n")
scanf("%s",D);
scanf("%d",&C);
B=aggiungi(C,D,B);
break;
}
exit(0);
}
Eugvr93
Starting Member
Starting Member
 
Messaggio: 3 di 10
Iscritto il: 27/08/2014, 15:53

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite