Discussione: [C] aiuto programma
View Single Post
Old 23-02-2010, 02:28   #1
spaistik
Junior Member
 
Iscritto dal: Feb 2010
Messaggi: 6
[C] aiuto simulazione postino

ciao ragazzi, mi servirebbe urgentemente un aiutino, praticamente devo creare un programma che simuli la consegna della posta, la traccia e la seguente:

"Si vuole sviluppare un programma che simula la consegna della posta da parte di un postino. Si suppone che il postino gestisce un quartiere di n strade e m case. Ogni singola abitazione è identificata da un numero civico, dal nome e cognome dell’utente. La strada è identificata da un numero. Il postino giornalmente riceve la posta che smista a tutti gli utenti, egli inizia dalle strade che hanno ricevuto più posta (in maniera decrescente) e per ogni strada egli inizia a consegnare dall’inizio della strada se essa è dispari e dalla fine se essa è pari."

io mi sono bloccato praticamente nel "egli inizia dalle strade che hanno ricevuto più posta"

il codice che ho sviluppato è questo:
Codice PHP:
[code]

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
struct Casa{
    
char nome[15];
    
char cognome[15];
    
int num_civ;
    
int posta;
    
int num_str;};
typedef struct Casa casa;
casa popolamento(casa ab[][10],int,int,int[]);
void ordinamento(int[],int);
void consegna(casa ab[][10],int,int);
int main()
{
int i,j,n,m,cnt[10];
casa ab[10][10];
srand(time(NULL));
printf("inserisci il numero di strade: ");
scanf("\n%d",&n);
printf("inserisci il numero di case per strada: ");
scanf("\n%d",&m);
ab[n][m];
cnt[n];
popolamento(ab,n,m,cnt);
ordinamento(cnt,n);
consegna(ab,n,m);
}
casa popolamento(casa ab[][10],int n,int m,int cnt[10])
{
int i,j;
for(
i=0;i<n;i++){
    for(
j=0;j<m;j++){
    
printf("Inserisci il Cognome del proprietario della %d^ abitazione %d strada: ",j+1,i+1);
    
scanf("\n%s",ab[i][j].cognome);
    
printf("Inserisci il Nome del proprietario della %d^ abitazione %d strada: ",j+1,i+1);
    
scanf("\n%s",ab[i][j].nome);
    
ab[i][j].num_civ=j+1;
    
ab[i][j].num_str=i+1;}}
for(
i=0;i<n;i++){
    for(
j=0;j<m;j++){
        
ab[i][j].posta=rand()%11;}}
for(
i=0;i<n;i++){
    for(
j=0;j<m;j++)
        
cnt[i]+=ab[i][j].posta;}}
}
void ordinamento(int cnt[10],int n)
{
int i,j,elem;
for(
i=1;i<n;i++){
    
elem=cnt[i];
    
j=i-1;
    while(
j>=&& elem>cnt[j]){
        
cnt[j+1]=cnt[j];
        
j--;}
    
cnt[j+1]=elem;}
}
void consegna(casa ab[][10],int n,int m)
{
int i,j;
for(
i=0;i<n;i++){
    if(
i%2==0)
    for(
j=m-1;j>=0;j--){
        if(
ab[i][j].posta!=0)
        
printf("%d posta consegnata al Sig. %s %s al N°%d, strada:%d\n",ab[i][j].posta,ab[i][j].cognome,ab[i][j].nome,ab[i][j].num_civ,ab[i][j].num_str);}
    else
    for(
j=0;j<m;j++){
        if(
ab[i][j].posta!=0)
        
printf("%d posta consegnata al Sig. %s %s al N°%d, strada:%d\n",ab[i][j].posta,ab[i][j].cognome,ab[i][j].nome,ab[i][j].num_civ,ab[i][j].num_str);}}
}

[/
code
praticamente devo solo far visualizzare la struct in base alla strada che ha avuto più posta, ma nn ho proprio idea di come fare! ho provato a usare un array cnt[] che contiene il totale di posta ottenuta per ogni strada e ho provato ad ordinarlo in maniera decrescente, ma nn so come continuare....vi prego aiutatemi!!!

Ultima modifica di spaistik : 23-02-2010 alle 17:28.
spaistik è offline   Rispondi citando il messaggio o parte di esso