zapisanie liczb z pliku tekstowego do tablicy dwuwymiarowej

0

Mam plik tekstowy z liczbami zapisanymi tak:
005300000
800000020
070010500
400005300
010070006
003200080
060500009
004000030
000009700
musze zapisać każdą cyfrę osobno do tablicy 9x9 i nie jestem pewna jak to zrobić?

2

i nie jestem pewna jak to zrobić?

Czego nie jesteś pewna? Jakie rozwiązanie chodzi Ci po głowie?

1

musze zapisać każdą cyfrę osobno do tablicy 9x9 i nie jestem pewna jak to zrobić?

Najłatwiej — czytając cyfra po cyfrze. Alternatywnie, czytając linijka po linijce, i wyłuskując poszczególne znaki z wynikowego stringa.

1
char tb[9][9];
FILE *fd=fopen("file.txt","r");
for(int y=0;y<9;++y) for(int x=0;x<9;++x) fscanf(fd,"%c",&tb[y][x]);
0

@_13th_Dragon: a jak zrobić to w drugą stronę?

for(i = 0; i < 9; i++)
        {
            for(j = 0; j < 9; j++)
            {
                fprintf(Sudoku, "%d", a[i][j]);
                if(i == 8)
                {
                    fprintf(Sudoku, "\n");
                }
            }
        }

napisałam coś takiego, ale zapisuje mi to tak:

1453276988396541276729185434961853722184739567532964813675428199847612355
2
1
8
3
9
7
6
4

1
Sway22 napisał(a):

@_13th_Dragon: a jak zrobić to w drugą stronę?

To co podałem to jest w ta drugą stronę (poprawną).
Problem polega na tym że nie jesteś w stanie poprawnie wyświetlić tablicy, a to dla tego że używasz nic nie znaczących w kontekście tablicy zmiennych i,j.

for(int y=0;y<9;++y,printf("\n")) for(int x=0;x<9;++x) printf(" %c",tb[y][x]);
0

Listing 1.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string fileName = "file.txt";
    char ch;
    fstream file;
    int iW{9},iK{9},tab[iW][iK],i{0},j{0};
    file.open(fileName, ios::in);

    if (file)
    {
        file.get(ch);
        while (file)
        {
            if(ch=='\n'){++i;j=0;}
            else {
                int cyfra = reinterpret_cast<int>(ch - '0');
                tab[i][j] = cyfra;
                ++j;
            }
            file.get(ch);
        }
        file.close();
    }
    else
        cout << "The file cannot be opened " << fileName << ".\n";


    for(int m{0};m<iW;++m,cout<<"\n")
    for(int n{0};n<iK;++n)cout<<tab[m][n]<< " ";

    return 0;
}

Listing 2.

#include <iostream>
#include <fstream>
#include <cstring>      //strlen
#include <sstream>      //stringstream
#include <vector>       //vector

using namespace std;

int main()
{
    std::ifstream file;
    file.open("file.txt", ios::in);

    std::string line, temp;
    int cyfra{0};
    vector<vector<int>>vec;vector<int>v;
    stringstream ss;

    if( !file.good() )
    {
        cout << "The file cannot be opened" << endl;
    }
    else
    {
        while( getline(file,line) )
        {
            for(unsigned int i=0;i<line.size();++i)
            {
                ss<<line[i];ss>>temp;
                if(stringstream(temp)>>cyfra){v.push_back(cyfra);}
                temp = "";ss.clear();
            }
            vec.push_back(v);v.clear();
        }
    }
    file.close();

    for(const auto &w: vec){for(const auto &el: w){cout<<el<<" ";}cout<<'\n';}
    cout<<'\n';

    for(uint16_t m{0}; m<vec.size(); ++m,cout<<"\n")
    for(uint16_t n{0}; n<vec[m].size(); ++n)cout<<vec[m][n]<< " ";

    return 0;
}




1

Początkiem dobrego wykonania jest dobre myślenie, a tym pomaga prawidłowe słownictwo.

Do tablicy (elementu w pamięci RAM, nietrwałego) się nie ZAPISUJE ale co najwyżej WCZYTUJE

1 użytkowników online, w tym zalogowanych: 0, gości: 1