Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    2

    matrici da file in C

    ciao,
    sto programmando in C con lccwin32;
    io ho questa matrice in un file:
    0 DAT BA CU
    DAT 0 12 51
    BA 9 0 39
    CU 40 31 0


    e la devo mettere in una matrice: matrice[righe][colonne];
    di che tipo deve essere la matrice?

    poi ad esempio, ho una variabile in cui c'è la stringa "DAT"
    e ho un'altra variabile dove c'è la stringa "BA",
    (la prima variabile si riferisce alla riga e la seconda alla colonna)
    come faccio mettere in un altra variabile il valore 12?(intersezione della riga 1 con la colonna 2?)
    e di che tipo deve essere questa variabile.
    a me serve che 12 sia di tipo int, così riesco a farci delle operazioni,
    oppure di tipo char; ma DAT e BA possono essere di tipo char?

  2. #2
    Mi sembra abbastanza ovvio che la matrice debba essere di char...

    Potresti complicarti un pò la vita introducendo una struttura che definisca un nuovo tipo di dato...

    In ogni caso il tutto dipende da come vuoi impostare la risoluzione del problema...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    2
    alla fine l'ho risolto così; può essere fatto meglio?

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

    #define lennomefile 50
    #define maxrighe 16
    #define maxcolonne 16
    #define maxstazioni 16

    struct stazione{
    char stazz[4];
    }stazioni[maxstazioni];

    int main()
    {

    FILE *file; /*puntatore al file*/
    int i,j;
    int matrice[maxrighe][maxcolonne];
    char cerca_stazione1[4]; //vettore di caratteri
    char cerca_stazione2[4];
    char nome_file[lennomefile];
    int ind1, ind2, tempo;

    printf ("Inserisci il nome del file con la matrice\n");
    scanf ("%s",nome_file);

    //apre il file e memorizza la matrice in memoria statica
    if ((file=fopen(nome_file,"r"))==(NULL))
    printf ("Impossibile aprire il file\n");
    else{
    i=0;
    while (!feof(file)){
    for (i=0;i<maxrighe;i++)
    for (j=0;j<maxcolonne;j++)
    fscanf(file,"%d",&matrice[i][j]);
    }
    fclose(file);
    }

    /*for (i=0;i<maxrighe;i++)
    for (j=0;j<maxcolonne;j++)
    printf("\t%d\n",matrice[i][j]); */

    printf("Inserisci il nome del file con le stazioni.\n");
    scanf ("%s",nome_file);

    //apre il file e memorizza la matrice in memoria statica
    if ((file=fopen(nome_file,"r"))==(NULL))
    printf ("Impossibile aprire il file\n");
    else{
    i=0;
    while (!feof(file)){
    for (i=0;i<maxstazioni;i++)
    fscanf(file,"%s",stazioni[i].stazz);
    }
    fclose(file);
    }

    /*for (i=0; i<maxstazioni; i++)
    {
    printf("Inserire la stazione: %i\n", i+1);
    scanf("%s", stazioni[i].stazz);
    }*/
    printf("Inserire la 1a stazione da cerca': \n");
    scanf("%s", cerca_stazione1);
    printf("DEBUG stazione cercata: %s\n", cerca_stazione1);
    printf("Inserire la 2a stazione da cerca': \n");
    scanf("%s", cerca_stazione2);
    printf("DEBUG stazione cercata: %s\n", cerca_stazione2);


    for (i=0; i<maxstazioni; i++)
    {
    if(!strcmp(stazioni[i].stazz, cerca_stazione1)) ind1 = i;
    if(!strcmp(stazioni[i].stazz, cerca_stazione2)) ind2 = i;

    printf("%d: %s\n",i,stazioni[i].stazz);
    }
    printf("ind1 = %d, ind2 = %d\n", ind1, ind2);
    tempo = matrice[ind1][ind2];
    printf("tempo = %d\n", tempo);


    return(0);
    }

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.