Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31

    [C]Help!! come passare un sottoprogramma che usa un array di struct

    ragazzi dovrei trasformare questo programma che mi riempie un array di struct in un sottoprogramma dal nome PUSH, che andro ad utilizzare per la gestione di una coda ad un ufficio postale (esempio)
    Non riesco a capire in che modo lo devo passare al programma chiamante, se usare una funzione o una procedura , please heeeeeelp Grazie in anticipo



    codice:
    #include<stdio.h>main()
    {
    int continua,i;
    
    
    struct coda {
           char nome[20];
           char cognome[20];
           };
    struct coda coda[120]; 
    
    
    do
    {
    printf("Aggiungi persona alla coda \n");
    printf("Nome: \n");
    scanf("%s",&coda[i].nome);
    printf("Cognome: \n");
    scanf("%s",&coda[i].cognome);
    
    
    i++;
    printf("Vuoi aggiungere una nuova persona alla coda?  \n");
    scanf("%d",&continua);
    }
    while ((i<120)&&(continua!=0));
    system("Pause");
    }
    Ultima modifica di gerry94; 19-01-2014 a 12:10

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se con la funzione devi solamente fare l'input di un elemento della struttura, passerai come argomento il puntatore a tale elemento e userai solamente le scanf. Ovviamente il ciclo non dovrà far parte della funzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    quindi dovrei fare una cosa di questo tipo ?
    struct PUSH(struct*coda[i])
    oppure voidPUSH(struct*coda[i])

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    poi l'array di nomi lo devo dichiarare anche nel programma chiamante?

    nn ci sto capendo piu nulla

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    codice: void PUSH(struct *coda[i]){
    int continua,i;


    i=0;
    do
    {
    printf("Aggiungi persona alla coda \n");
    printf("Nome: \n");
    scanf("%s",&coda[i].nome);
    printf("Cognome: \n");
    scanf("%s",&coda[i].cognome);


    i++;
    printf("Vuoi aggiungere una nuova persona alla coda? \n");
    scanf("%d",&continua);
    }


    while ((i<120)&&(continua!=0));
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    mi dice che coda[i] non è dichiarata quando è dichiarata nel programma principale e la scambio per riferimento con quella del sottoprogramma push
    Ultima modifica di gerry94; 19-01-2014 a 12:59

  7. #7
    sbagli perchè il tipo non è struct ma struct coda.
    codice:
    void PUSH(struct coda* vettorecoda)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    Cosi nn va :/

    codice:
    #include<stdio.h>
    void PUSH(struct coda* coda[i])
    {
    int continua,i;
    struct coda {
           char nome[20];
           char cognome[20];
           };
    struct coda coda[120]; 
    i=0;
    do
    {
    printf("Aggiungi persona alla coda \n");
    printf("Nome: \n");
    scanf("%s",&coda[i].nome);
    printf("Cognome: \n");
    scanf("%s",&coda[i].cognome);
    
    
    i++;
    printf("Vuoi aggiungere una nuova persona alla coda?  \n");
    scanf("%d",&continua);
    }
    while ((i<120)&&(continua!=0));
    }
    
    
    main()
    {int i,operazione;
    struct coda {
           char nome[20];
           char cognome[20];
           };
    struct coda coda[120]; 
    
    
    printf("----PUSH = 1----\n------POP = 2-------");
    
    
    
    
    while(operazione!=1)
    {
    printf("Coda vuota, immettere nuovo elemento");
    scanf("%d",&operazione);
    }
    i=0;
    if(operazione==1)
    {
    PUSH(*coda[i]);
    }
    if(operazione==2)
    POP(&coda[i]);
    
    }
    Ultima modifica di gerry94; 19-01-2014 a 14:34

  9. #9
    infatti io non ho scritto:
    codice:
    void PUSH(struct coda* coda[i])
    MA
    codice:
    void PUSH(struct coda* coda)
    che in alternativa è la copia di
    codice:
    void PUSH(struct coda coda[])
    E le puoi usare alla stessa maniera

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    mi dice 2 "struct coda" declared inside parameter list e poi its scope is only this definition or declaration, which is probably not what you want


    ecco come lho scritto
    codice:
    #include<stdio.h>void PUSH(struct coda* coda)
    {
    int continua,i;
    struct coda {
           char nome[20];
           char cognome[20];
           };
    
    
    i=0;
    do
    {
    printf("Aggiungi persona alla coda \n");
    printf("Nome: \n");
    scanf("%s",&coda[i].nome);
    printf("Cognome: \n");
    scanf("%s",&coda[i].cognome);
    
    
    i++;
    printf("Vuoi aggiungere una nuova persona alla coda?  \n");
    scanf("%d",&continua);
    }
    while ((i<120)&&(continua!=0));
    }
    
    
    
    
    
    
    main()
    {int i,operazione;
    struct coda {
           char nome[20];
           char cognome[20];
           };
    struct coda coda[120]; 
    
    
    printf("----PUSH = 1----\n------POP = 2-------");
    
    
    
    
    while(operazione!=1)
    {
    printf("Coda vuota, immettere nuovo elemento");
    scanf("%d",&operazione);
    }
    i=0;
    if(operazione==1)
    {
    PUSH(&coda[i]);
    }
    if(operazione==2)
    {
    }
    
    
    
    
    
    
    system("Pause");
    
    
    }
    Ultima modifica di gerry94; 19-01-2014 a 14:53

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.