Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Parma
    Messaggi
    7

    FUNZIONI E PASSAGGIO array di struct COME PARAMETRI C++!!

    salve a tutti.. devo creare una funzione "restringi()" che prenda come parametri:
    - un array R di struct P (dove definisco struct P con due campi, c1=int e c2=array di char)
    - un array A di tipo int
    - un array S di tipo struct P, contenente le struct di R, dove sono contenuti elementi in comune fra R[].c1 A[]
    e poi stampi S ed il numero di elementi di S..
    esempio stupido
    R={19, "aaa", 20, "bbb", 21, "ccc"}
    A={19, 21}
    stampa S= 19 aaa
    21 ccc

    la funzione devo poi inserirla in un "main di prova" dove i dati vengono definiti dall'utente..
    come devo fare? NON RIESCO A PASSARE I PARAMETRI ALLA FUNZIONE..
    ho azzardato questo.. ma non funziona.. qualcuno puo dirmi cosa sbaglio? (per favore no puntatori)

    codice:
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    
    struct P        //dichiaro il tipo P
        {
      int c1;
      char c2[80];
    }; 
    
        struct P R[4];        
        struct P S[4]; 
        int m, n, x;// dim R, dim A, dim elementi S (Condivisi)
        int r, a, s;// indici di R, A ed S
        int A[4];
    
    int restringi(struct P, P R[], int A[], int n, int m, P S[])
    {
       for(r=0; r<=m; r++)
       {        
          for(a=0; a<=n; a++)
           {
               if (A[a]==R[r].c1)
               {
                  S[s].c1=A[a];
                  stricmp(S[s].c2, R[r].c2);
                  x++;                
               }
                
            }
            
         }
       
       return x;
    }
        
    int main()
    {
      int m, n, x;// dim R, dim A, dim elementi S (Condivisi)
      int r, a, s;
      struct P        //dichiaro il tipo P
      {
        int c1;
        char c2[80];
      };
      struct P R1[m]; 
      struct P S1[x];
      int A1[n];
        
      cout<<"programma di prova.."<<endl;
      cout<<"inserisci il numero di elementi R:"<<endl;
      cin>>m;
      r=0;
      for (r=0; r<m; r++)
      {                                      
          cout<<"Inserisci il "<<r+1<<" elemento numerico "<<endl;
          cin>>R1[r].c1;                                            
      }                                                                
      r=0;                                                
      for (r=0; r<m; r++)
      {                                        
         cout<<"Inserisci il "<<r+1<<" elemento alfanumerico "<<endl;
         cin>>R1[r].c2;                                    
      }                                                                 
        
        cout<<"inserisci il numero di elementi A:"<<endl;
        cin>>n;
        a=0;
        for (a=0; a<n; a++)
      {
         cout<<"Inserisci il "<<r+1<<" elemento di A "<<endl; 
         cin>>A1[a]; 
       } 
        
     x = restringi (P R1[ ] , int A1 [ ], int n, int m, P S1 [ ]);
    
           cout<<"il numero di elementi di S è: " <<x;
           cout<<"gli elementi di S sono: "; // nn posso continuare la funzione non va!!
    
    return 0;
    }
    Ultima modifica di LeleFT; 13-05-2015 a 16:28 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto usa i tag CODE per il codice nel forum e indentalo correttamente, altrimenti non si capisce nulla.

    Poi vedo variabili

    int m, n, x;/

    dentro e fuori dal main ... perché due volte?


    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Comunque, sembra che devi impostare la funzione

    int restringi(struct P R[], int A[], struct P S[])

    che chiamerai con

    restringi(R, A, S);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Parma
    Messaggi
    7
    ho indentato ma qui non lo visualizza.. le variabili non sapevo se metterle solo nella definizione della fx oppure anche nel main.. la peggiore delle ipotesi è che il programma avrebbe potuto non funzionare..

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da e.terry Visualizza il messaggio
    ho indentato ma qui non lo visualizza..
    Perché, come ti ho detto, devi usare i tag CODE.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Parma
    Messaggi
    7
    non ho idea di come si usino..

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Quote Originariamente inviata da e.terry Visualizza il messaggio
    non ho idea di come si usino..
    Li avevo già messi io... Comunque, si usano in questo modo:


    [CODE]
    poi si incolla il codice
    [/CODE]


    Quello che c'è fra i due tag viene formattato automaticamente dal forum


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nel codice ci sono varie imprecisioni ed errori (soprattutto con i nomi degli array e delle variabili), ma per rimanere al problema che hai esposto, dovresti scrivere

    x = restringi(R1, A1, n, m, S1);

    e ovviamente la funzione dovrà essere dichiarata con

    int restringi(struct P R[], int A[], int n, int m, struct P S[])
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.