zhuravlevkk
@zhuravlevkk
Инженер-программист

Как перейти к определенному элементу матрицы из текстового файла?

Есть матрица, записанная в cvs файл. В качестве разделителя используется символ ';'.
29;89;77;56;7;40;100;29;57;60;
49;4;44;51;86;37;25;54;51;61;
5;93;55;15;37;92;68;54;28;48;
83;48;16;50;93;20;64;76;78;42;
96;1;100;57;45;53;63;97;22;47;
84;25;76;61;31;52;53;90;46;5;
17;43;23;49;84;34;26;1;63;52;
68;54;48;96;83;37;34;37;96;92;
27;70;58;41;94;48;14;89;99;86;
40;21;66;98;40;78;72;27;72;76;


Необходимо перейти к определенному элементу в матрице (в последующем этот элемент нужно будет заменить) и вывести его. Числа случайные и необязательно двухзначные.

Залип на этот моменте
cpp_int getElementInFile(fstream &file, unsigned int size, size_t i, size_t j)
{
	cpp_int toReturn;
	cpp_int temp;
	string test;
	int sizeOfElement = (sizeof(cpp_int) + sizeof(';'));
	streampos saveCurrentCursor = file.tellg();//сохраняем позицию курсора
	file.seekg(0, ios::beg);//переходим на начало файла
	file.seekg(((i-1)*size+(j-1))*sizeOfElement, ios::cur);
	file >> test;
	cout << test;
	return toReturn;
}
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@vanyamba-electronics
#include <iostream>

using namespace std;

int main() 
{
    unsigned int col = 3;
    unsigned int row = 1;
    char ch;
    unsigned int cell = 0;
    
    // Skip rows less than row
    for (unsigned int nRow = 0; nRow < row; ++nRow)
        do {
            cin.get(ch);
        } while (ch != '\n');
    // Skip columns less than col
    for (unsigned int nCol = 0; nCol < col; ++nCol)
        do {
            cin.get(ch);
        } while (ch != ';');
    // Read number
    do {
        cin.get(ch);
        if (isdigit(ch))
            cell = cell * 10 + ch - '0';
    } while(ch != ';');
    cout << cell << endl;
    return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы