ok i have a problem, like you can see in the code i already create a bidimesional array step by step..... ok i want to eliminate that, and instead of that i want to load the array from a .txt like this>

0-0-6-0-0-0-6-0-0-0
0-0-8-4-0-0-0-0-0-0
6-8-0-0-0-0-0-0-0-0
0-4-0-0-2-0-0-0-0-0
0-0-0-2-0-4-0-0-0-0
0-0-0-0-4-0-0-1-0-0
6-0-0-0-0-0-0-0-0-5
0-0-0-0-0-1-0-0-7-0
0-0-0-0-0-0-0-7-0-0
0-0-0-0-0-0-5-0-0-0

and i want to insert the numbers in the bidimensional array one by one
how can i do that????
i tried using getline and strtok, but i don't know how to do it

sorry if my english isn't the best. i'm from costa rica

#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
#include <iostream>
#include <fstream>
using namespace std;

void Floyd()
{
  
   int n = 10;
   int C[n][n];
  C[0][0]=0;C[0][1]=0;C[0][2]=6;C[0][3]=0;C[0][4]=0;C[0][5]=0;C[0][6]=6;C[0][7]=0;
          C[0][8]=0;C[0][9]=0;
  C[1][0]=0;C[1][1]=0;C[1][2]=8;C[1][3]=4;C[1][4]=0;C[1][5]=0;C[1][6]=0;C[1][7]=0;
          C[1][8]=0;C[1][9]=0;
  C[2][0]=6;C[2][1]=8;C[2][2]=0;C[2][3]=0;C[2][4]=0;C[2][5]=0;C[2][6]=0;C[2][7]=0;
          C[2][8]=0;C[2][9]=0;
  C[3][0]=0;C[3][1]=4;C[3][2]=0;C[3][3]=0;C[3][4]=2;C[3][5]=0;C[3][6]=0;C[3][7]=0;
          C[3][8]=0;C[3][9]=0;
  C[4][0]=0;C[4][1]=0;C[4][2]=0;C[4][3]=2;C[4][4]=0;C[4][5]=4;C[4][6]=0;C[4][7]=0;
          C[4][8]=0;C[4][9]=0;
  C[5][0]=0;C[5][1]=0;C[5][2]=0;C[5][3]=0;C[5][4]=4;C[5][5]=0;C[5][6]=0;C[5][7]=1;
          C[5][8]=0;C[5][9]=0;
  C[6][0]=6;C[6][1]=0;C[6][2]=0;C[6][3]=0;C[6][4]=0;C[6][5]=0;C[6][6]=0;C[6][7]=0;
          C[6][8]=0;C[6][9]=5;
  C[7][0]=0;C[7][1]=0;C[7][2]=0;C[7][3]=0;C[7][4]=0;C[7][5]=1;C[7][6]=0;C[7][7]=0;
          C[7][8]=7;C[7][9]=0;
  C[8][0]=0;C[8][1]=0;C[8][2]=0;C[8][3]=0;C[8][4]=0;C[8][5]=0;C[8][6]=0;C[8][7]=7;
          C[8][8]=0;C[8][9]=0;
  C[9][0]=0;C[9][1]=0;C[9][2]=0;C[9][3]=0;C[9][4]=0;C[9][5]=0;C[9][6]=5;C[9][7]=0;
          C[9][8]=0;C[9][9]=0;


  int A [n][n];
  string s [n][n];
  printf("Inicial Matrix\n");
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<n;j++)
    {
      printf("%d ",C[i][j]);
    }
    printf("\n");
  }
  
  int i,j,k;
  for (i=0; i<n; i++)
  {
    for (j=0; j<n; j++)
    {
      if (C[i][j]==0)
      {
        A[i][j] = 999999999;    // infinity
      }
      else
      {
        A[i][j] = 1;
        char sz[3]="";
        sprintf(sz,"%d",j+1);
        s[i][j] = sz;
      }
    }
  }
// set diagonal in zero
  for (i=0; i<n; i++)
  {
    A[i][i] = 0;
  }

  for (k=0; k<n; k++)
  {
    for (i=0; i<n; i++)
    {
      for (j=0; j<n; j++)
      {
        if ( A[i][k] + A[k][j] < A[i][j] )
        {
          A[i][j] = A[i][k]+ A[k][j];
          s[i][j] = s[i][k]+ "," + s[k][j];
        }
      }
    }
  }

  printf("\nShortest Distances\n");
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<n;j++)
    {
      printf("%d ",A[i][j]);
    }
    printf("\n");
  }
  printf("\nShortest paths:\n");
  
  for(int i=0;i<n;i++)
  {
    for(int j=i+1;j<n;j++)
    {
      printf("Path to %d from %d is %s\n",i+1,j+1,s[i][j].c_str());
    }
    printf("\n");
  }

   
}  

int main()
{
  Floyd();
  system ("pause");
  return 0;
}

Thanks

Recommended Answers

All 2 Replies

heres a good link. Apparently people have some problems with the coding techniques in this tutorial so be advised.

thanks i think this is useful

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.