Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct info
- {
- char nome[30];
- int peso;
- }info;
- typedef struct grafo
- {
- info nodo;
- struct grafo *next;
- }grafo;
- typedef grafo *pgrafo;
- typedef struct appoggio
- {
- int indice;
- int pesi;
- }appoggio;
- void ini_grafo(pgrafo k[],int size)
- {
- pgrafo app;
- int i;
- for(i=0;i<size;i++)
- {
- system("cls");
- app=calloc(1,sizeof(struct grafo));
- printf("Inserire il [%d] elemento: ",i+1);
- fflush(stdin);
- gets(app->nodo.nome);
- printf("Inserire il [%d] peso dell'elemento: ",i+1);
- scanf("%d",&app->nodo.peso);
- k[i]=app;
- }
- }
- void carica_lista(pgrafo k[],pgrafo t,int size , int j)
- {
- int i,cont=0;
- char scelta,nom[30];
- pgrafo app;
- do
- {
- system("cls");
- printf("Si vuole inserire un nodo collegato a %s[s=SI|n=NO]: ",k[j]->nodo.nome);
- fflush(stdin);
- scanf("%c",&scelta);
- if(scelta=='s')
- {
- system("cls");
- printf("Inserire il nome da collegare : ");
- fflush(stdin);
- gets(nom);
- for(i=0;i<size;i++)
- {
- if(strcmp(nom,k[i]->nodo.nome)==0)
- {
- app=calloc(1,sizeof(struct grafo));
- app->nodo=k[i]->nodo;
- t->next=app;
- t=app;
- cont+=1;
- }
- }
- }else if(scelta=='n')
- {
- system("cls");
- printf("Arrivederci\n");
- system("pause");
- }else
- {
- system("cls");
- printf("SCELTA NON VALIDA!\n");
- system("pause");
- }
- }while(scelta!='n'&& cont<size);
- }
- void stampa(pgrafo p)
- {
- while(p!=NULL)
- {
- printf("%s -> ",p->nodo.nome);
- p=p->next;
- }
- printf("NULL\n");
- }
- void carica_peso (appoggio *cosa, pgrafo k, int j)
- {
- (*cosa).pesi=0;
- (*cosa).indice=j;
- while(k!=NULL)
- {
- (*cosa).pesi+=k->nodo.peso;
- k=k->next;
- }
- }
- void ordina (appoggio cosa[],int size)
- {
- int i,j;
- appoggio *l;
- l=calloc(1,sizeof(struct appoggio));
- for(i=0;i<size;i++)
- {
- for(j=i+1;j<size;j++)
- {
- if(cosa[j].pesi<cosa[i].pesi)
- {
- *l=cosa[i];
- cosa[i]=cosa[j];
- cosa[j]=*l;
- }
- }
- }
- }
- void media (appoggio cosa[],int size)
- {
- int media=0,j;
- for(j=0;j<size;j++)
- media+=cosa[j].pesi;
- printf("\n La media \x82 : %d",media/size);
- }
- int main()
- {
- pgrafo *k;
- int size,j;
- appoggio *cosa;
- printf("Inserire il numero dei nodi: ");
- scanf("%d",&size);
- k=calloc(size,sizeof(struct grafo));
- ini_grafo(k,size);
- for(j=0;j<size;j++)
- carica_lista(k,k[j],size,j);
- for(j=0;j<size;j++)
- stampa(k[j]);
- cosa=calloc(size,sizeof(struct appoggio));
- for(j=0;j<size;j++)
- carica_peso(&cosa[j],k[j],j);
- ordina(cosa,size);
- printf("Il nodo che pesa meno \x82: \n");
- stampa(k[cosa[0].indice]);
- printf("Il nodo che pesa di piu \x82: \n");
- stampa(k[cosa[size-1].indice]);
- media(cosa,size);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment