Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16

    [c++] "ricavare" un vettore da una matrice

    Salve ragazzi, stavo provando a scrivere un programma che data una matrice, stampi un vettore composto dagli elementi positivi della matrice (perchè nella matrice ci sono sia gli elementi positivi che nagativi)...Faccio un esempio:
    Mat:
    3 -2 -5 6
    10 9 -4 7
    Vett:
    -2 -5 -4

    Fin ora ho scitto questo ma mi dà un errore (questa è il codice di definizone della funzione):
    codice:
         int i,j;
         bool trovato=false;
         riempv=0;
         
         for(i=0;i<rig;i++){
             j=0;
             trovato=false;
             while(j<col && !trovato)
                         if(mat[i][j]>0){
                             riempv=mat[i][j];
                             v[i]=riempv;
                             riempv++;
                             trovato = true;
                             }
                             else j++;
    l'errore è "invalid conversion from int* to int"... alla riga "riempv=mat[i][j]"
    Confesso che ho fatto tutto tramite funzioni e moduli, inoltre ho già definito i tipi matrice e vettore...Non riesco a capire perchè mi dà quel tipo di errore.
    Potete aiutarmi a capire?
    Ultima modifica di Wimmo; 10-02-2015 a 20:53

  2. #2
    Quote Originariamente inviata da Wimmo Visualizza il messaggio
    Vett:
    -2 -5 -4
    Ma questi sono valori negativi

    Quote Originariamente inviata da Wimmo Visualizza il messaggio
    codice:
         int i,j;
         bool trovato=false;
         riempv=0;
         
         for(i=0;i<rig;i++){
             j=0;
             trovato=false;
             while(j<col && !trovato)
                         if(mat[i][j]>0){
                             riempv=mat[i][j];
                             v[i]=riempv;
                             riempv++;
                             trovato = true;
                             }
                             else j++;
    l'errore è "invalid conversion from int* to int"... alla riga "riempv=mat[i][j]"
    Confesso che ho fatto tutto tramite funzioni e moduli, inoltre ho già definito i tipi matrice e vettore...Non riesco a capire perchè mi dà quel tipo di errore.
    Potete aiutarmi a capire?
    Come hai dichiarato mat e riempv ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    hai ragione ho sbagliato esempio
    il vettore dovrebbe essere:
    3 6 10 9 7 vabbè ..
    comunque ho dischiarato così:

    const int maxdim=30;
    typedef int vettore [maxdim];
    typedef vettore matrice [maxdim][maxdim];

    poi nel main ho dichiarato:
    vettore vposit;
    matrice mat;

  4. #4
    La dichiarazione della variabile riempv continua ad essere avvolta dal mistero
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Ad ogni modo penso dovresti dichiarare matrice così

    codice:
    typedef int matrice [maxdim][maxdim];
    Ultima modifica di Samuele_70; 10-02-2015 a 22:03
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Grazie facendo così si è risolto quel problema;
    In compenso mi è uscito
    [Linker error] undefined reference to `leggi_mat(int (*) [30][30], int&, int&, char const*)'

    Uffaaa
    Aspetta ti dico come ho dichiarato tutto :
    Nel file lib.h ho scritto
    codice:
    void leggi_mat(matrice, int&, int&, const stringa);
    Nel main la chiamata di funzione così :
    codice:
    leggi_mat(mat, rig, col, nomefile); //questo nomefile indica il nome del file di testo dal quale prendere la matrice
    e in lib.cpp
    codice:
    void leggi_mat(matrice mat, int&rig, int&col, stringa nomefile){
         int i,j;
         
         FILE*fp=fopen(nomefile, "r");
         if(fp==0){
                   cout<<"\n Impossibile trovare il file: "<<nomefile<<" ! \nConstrollare la directory...";
                   system("PAUSE");
                   exit(1);
                   }
         fscanf(fp, "%d %d", &rig, &col);
         for(i=0;i<rig;i++)  
            for(j=0;j<col;j++)
               fscanf(fp,"%d", &mat[i][j]);
               
         fclose(fp);
    }
    Le librerie penso di averle implementate bene...
    eccole :
    #include <iostream>
    #include <cstdlib>
    #include <stdio>
    #include "lib.h"
    Le ho inserite sia nel file del main sia nel file lib.cpp...

  7. #7
    Il linker non trova la definizione della funzione leggi_mat(), hai aggiunto lib.cpp al progetto ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Siii T-T
    HO fatto esattamente "New source file" mi ha chiesto "vuoi inserire nuovo file blabla al progetto?" e ho cliccato si...
    ma non è la è prima volta che mi esce, ultimamente mi sta uscendo troppo spesso

  9. #9
    Quale IDE usi per compilare ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Puoi mostrare ordinatamente il contenuto dei file ?

    lib.h

    lib.cpp

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

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.