Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema con le matrici [C]

    salve, ho provato a fare un programma che legge dal un file il numero di elementi in esso contenuti (sono dei numeri) e mi crea una matrice quadrata con tutti zeri che ha tante righe e colonne quanto č il numero degli elementi nel file.
    ma non funziona, mi potete dare una mano e aiutare a capire dov'č l'errore??
    grazie

    #include <stdlib.h>
    #include <stdio.h>


    int conta_elementi(file) { .
    int n, x;
    FILE *in; //puntatore all'inizio del file.


    if(in = fopen (file, "r")){ // se il file si apre correttamente:
    while(!feof(in)) { // fino a che non arrivo alla fine del file.
    fscanf (in, "%d", &x); //leggo un numero alla volta nel file.
    n = n++;// "n" serve per spostarsi nel file e contemporaneamente conta quanti
    //elementi ci sono.
    }
    fclose(in); // chiudo il file.
    } else { // se il file non si apre stampo a video un messaggio di errore.
    fprintf (stderr, "errore nella lettura del file \n");
    }
    return (n); // alla fine mi ritorna n=numero di elementi.
    }


    int costruisci_matrice (int A[i][j]){//costruiamo una matrice con tutti zeri.
    int i=0;
    int j=0;
    int n;
    while(j< n-1){
    A[i][j]=0;
    j++;
    while(i<n-1){
    A[i][j]=0;
    i++;
    }
    }
    }


    int stampa_matrice(int A[i][j]){
    int i=0;
    int j=0;
    while(j<n-1){
    printf("%d", A[i][j]);
    j++;
    }
    printf("\n");
    while(i<n-1){
    printf("%d", A[i][j]);
    i++;
    }
    }

    int main (void){
    int A[i][j];
    int i, j;
    n=conta_elementi(file);
    costruisci_matrice(A[i][j]);
    stampa_mtrice(A[i][j]);
    return (1);
    }

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Ciao

    Se non usi i tag code e indentazione , diventa MOLTO difficile capire il tuo codice , che č gią molto confuso da per sč.

    dichiari una matrice int A[i][j]; i e j non sono inizializzate e quindi hanno un valore casuale non puoi usare variabili per le dimensioni di una matrice .

    usi nelle funzioni la variabile n nei cicli , dove non č una variabile globale , e se dichiarata in alcuni
    casi nella funzione non č inizializzata , quindi altro valore casuale


    come inizializzi e stampi la matrice con i while č sbagliato


    I PROBLEMI SONO MOLTI , e occorrerebbe un thread per ogni problema , segui le indicazioni che ti ho dato e prova a risolvere , cerca con google , "matrici e ciclo for " per vedere come stampare la matrice .
    Ultima modifica di torn24; 07-02-2014 a 13:02
    Tecnologia

  3. #3
    ok che ci sono diversi problemi, ma tu dici che devo usare il ciclo di for, ma a me il professore ha detto di usare il while. mi spieghi dove sbaglio a inizializzare e stampare la matrice?? perchč non capisco!
    grazie

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il codice č illeggibile senza tag CODE.

    Comunque... se devi usare per forza il while, fa una cosa del genere:

    codice:
    int riga = 0;
    int colonna = 0;
    int MAX = ... // devi dargli un valore, magari passandolo alla funzione
    
    while (riga < MAX) 
    {
        while (colonna < MAX)
        {
            matrice[riga][colonna] = 0;
            colonna++;
        }
        riga++;
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.