Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10

    Classe funzione inserimento

    File.h
    codice:
    #include<iostream>
    
    using namespace std;
    
        struct elem {
            int valore;
            int indice;
            elem* pun;
            };
    class Vettoresparso {
            elem* primo;
            int dim;
    
        public:
        
        Vettoresparso( int );
         void set( const int,  const int);
        
    friend ostream& operator << (ostream&, const Vettoresparso&);
        
        /*void visualizzadenso(int );
        void reset(int);
        Vettoresparso operator *=(int);
        ~Vettoresparso();*/
    };
    File.cpp

    codice:
    #include "vettore.h"
    
        /*struct elem {
            int valore;
            int indice;
            elem* pun;
            };*/
     
     Vettoresparso::Vettoresparso(int d)
     {    
     dim=d;
      primo=NULL;
    }
     
     ostream& operator << (ostream& os, const Vettoresparso& s)
      {    int conta=0;
          elem* p;
          
          for( p=s.primo;p!=NULL;p=p->pun)
              {
              conta++;         
              }
          os<<"["<<s.dim<<"] ";
                p=s.primo;
          for( p=s.primo;p!=NULL;p=p->pun)
              {
          os<<"["<<p->valore<<","<< p->indice<<"]";    
              }
      
     return os;
      }
      
      void Vettoresparso::set(const int v, const int i)
      {    
          elem* p, *r;
    
              
      if(v==0||i<0)
      
          {return;}
       if (primo==NULL)
              {
              primo=new elem;
              primo->indice = i;
            primo->valore = v;
            p->pun=primo;
                  }
    
      for( p=primo;p!=NULL;p=p->pun)
          {
                  
          if (p->indice > i||p->pun==NULL)
              {
                  r=new elem;
                  r->indice=i;
                  r->valore=v;
                  r->pun=p->pun;
                  p->pun=r;
                  
                  }
              }
          return;
              
              }
    ho dei problemi con il costruttore, il ompilatore mi dice che:

    ettore.cpp: In constructor ‘Vettoresparso::Vettoresparso(int)’:
    vettore.cpp:12:2: error: ‘dim’ was not declared in this scope
    vettore.cpp: In function ‘std:stream& operator<<(std:stream&, const Vettoresparso&)’:
    vettore.cpp:24:15: error: ‘const class Vettoresparso’ has no member named ‘dim’

    come mai? dim è la dimensione del vettore ma non capisco perchè non possa usarli...potete aiuarmi?

    l'esercizio mi chiede di creare queste funzioni
    Costruttore di default,
    che inizializza un VettoreSparso
    Inizialmente s è privo di entrate.
    s
    di dimensione d.

    s.set(v,i);

    Operazione che aggiunge l’entrata (v,i) al vettore sparso s. In particolare, l’operazione
    deve lasciare s invariato:
    nel caso in cui l’indice i sia fuori dall’intervallo ammissibile, oppure
    nel caso in cui v sia pari a zero (sarebbe sbagliato aggiungere una entrata a valore
    nullo, in quanto la non presenza di una entrata con quello stesso indice indica già che
    quell’elemento del vettore vale zero).
    Nel caso in cui sia i che v siano validi, l’operazione:
    se è già presente una entrata con indice i, si limita ad aggiornarne il campo valore a v;
    altrimenti, aggiunge alla lista la nuova entrata (v,i).

    cout<<s;
    Operatore di uscita per il tipo VettoreSparso. L’uscita ha la seguente forma:
    [7]{(-2,1)(4,3)(8,5)}

    non vi chiedo la soluzione voglio degli indizi per arrivarci da solo, altrimenti non imparerò mai!
    grazie mille
    Ultima modifica di Tuono94; 12-02-2014 a 11:57

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non ho quell'errore ... controlla come compili?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Non ho quell&#39;errore ... controlla come compili?
    davide@etruria-wifi-216-208:~/classevettoresparso$ g++ main.cpp vettore.cpp
    vettore.cpp: In function &lsquo;std:stream& operator<<(std:stream&, const Vettoresparso&)&rsquo;:
    vettore.cpp:13:8: error: &lsquo;elem&rsquo; was not declared in this scope
    vettore.cpp:13:14: error: &lsquo;p&rsquo; was not declared in this scope

    non ho fatto grossi miglioramenti...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma questi sono altri errori, non sono quelli di prima.

    Prima l'errore indicava 'dim' ora 'elem' e 'p' ...

    Sei sicuro di non avere cambiato i sorgenti? E poi l'include si chiama File.h o vettore.h ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    si chiama vettore.h...ho scritto file.h perchè pensavo fosse più chiaro! a quanto pare no! ahah
    comunque non ho cambiato nulla semplicemente nel file dell'operatore << non mi riconosce dim elem e p che però ho scritto nel file vettore.h e che ho incluso nel file vettore.cpp!

    codice:
     ostream& operator << (ostream& os, const Vettoresparso& s)
      {    int conta=0;
          elem* p;
          
          for( p=s.primo;p!=NULL;p=p->pun)
              {
              conta++;         
              }
          os<<"["<<s.dim<<"] ";
                p=s.primo;
          for( p=s.primo;p!=NULL;p=p->pun)
              {
          os<<"["<<p->valore<<","<< p->indice<<"]";    
              }
    la cosa strana è che nella funzione set utilizzo gli stessi elementi e non mi da errore...

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.