Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22

    [C] Matrici

    Ciao!
    Ho un problema che non riesco a risolvere.
    Ho un vettore di n*m valori (che io in realta' non conosco a priori e devo cacolarli osservando il vettore) e vorrei creare una matrice nxm. La prima riga della matrice deve contenere i primi m valori del vettore e così via, fino a creare n righe.
    Supponendo che il mio vettore è "Hello world!", ovvero 12 caratteri, considero n=4 e m=3.
    Il codice che ho scritto è:

    #include <stdio.h>
    #include <stdlib.h>
    #define kLunghezzaMaxStringa 100000
    #define fin "input.txt"
    int main (void);
    int LeggiDaFile(void);
    int Seleziona(void);

    char *vettore; // non definisco la dimensione perchè nel mio caso non è a priori nota
    char **matrice;

    int n=4;
    int m=3;

    int main (void){
    LeggiDaFile();
    Seleziona();
    return(0);
    }

    int LeggiDaFile(void) { // il file input.txt contiene "Hello world!"
    FILE *ingresso;
    ingresso=fopen(fin,"r");
    vettore=calloc(kLunghezzaMaxStringa,sizeof(char));
    fread(vettore, 1, kLunghezzaMaxStringa, ingresso);
    fclose(ingresso);
    return(0);
    }

    int Seleziona(void){
    int i;
    int j=0;
    int k=0;
    int dim=n*m;

    matrice=calloc(kLunghezzaMaxStringa,sizeof(char));
    for(i=0;i<dim;i++){
    matrice[j][k]=vettore[i];
    k++;
    if (k == m) {
    j++;
    k=0;
    }
    }

    return(0);
    }


    Sapreste dirmi dove sta il problema?

    Grazie tante!
    Chiara

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] Matrici

    Originariamente inviato da kali82
    Sapreste dirmi dove sta il problema?
    Che non hai allocato come si deve la matrice bidimensionale.

    Avendo un char** ovvero "un puntatore a puntatore a char" devi allocare la matrice in modo da avere una situazione di questo tipo:



    Cioè un array principale che contiene N puntatori char*, ognuno dei quali punta ad un array di M char.

    Fai una ricerca sul forum, perché l'argomento è stato trattato davvero tante (troppe) volte.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    22
    Ok, grazie, sono riuscita a trovare un file su google, sul forum non avevo trovato nulla, forse cerco male...

    Ciao!

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.