![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Наталя |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
Есть файл в котором записаны позиции на которых в матрице стоят единицы (матрица состоит из 0 и 1),это выглядит примерно так:23 45 ;56 34 ;67 87 ; и т. д.
Нужно сделать из этого матрицу. Размер матрицы фиксированный(233). Помогите, пожалуйста. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Делай что-то такое:
#include <iostream.h>
#include <fstream.h>
class Pos {
public:
Pos(): x(0), y(0) {
}
int x, y;
};
istream& operator >> (istream &is, Pos &p) {
char ch;
is >> p.x >> p.y >> ch;
return is;
};
int main() {
int arr[100][100] = {0}; // Здесь задай нужную тебе размерность
ifstream in_file("pos.txt", ios :: in);
Pos p;
while( !in_file.eof() ) {
in_file >> p;
arr[p.x][p.y] = 1; // Вот тут и устанавливается 1-ца там, где нужно...
}
in_file.close();
return 0;
}
|
RebIonok |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Наташа Репутация: ![]() ![]() ![]() |
А если без классов? Можно ведь
![]() И конечно огромное спасибо!!! |
RebIonok |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Наташа Репутация: ![]() ![]() ![]() |
тут еще в чем прикол что если метрица например arr[i][j], то в файле записаны только позиции j,а i дожно свитаться точками с запятой.
Я извиняюсь за не корректно поставленную задачу. |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата(RebIonok @ 20.07.2006 14:52) А если без классов? Можно ведь Можно, конечно... Только когда я вижу, что требуется написать программу на C++, то естественно, я пользуюсь классами... А насчет исправления задания - непонятно... Если задана матрица a[i][j], то для того, чтобы проставить 1-цы, нужно получить 2 числа... Приведенный пример файла как раз и рассчитан на двумерную матрицу, и я именно для двумерной и сделал... |
RebIonok |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Наташа Репутация: ![]() ![]() ![]() |
А насчет исправления задания - непонятно... Если задана матрица a[i][j], то для того, чтобы проставить 1-цы, нужно получить 2 числа... Так и есть, в a[i][j], i-счетчик и нарастает при каждом знаке ";", а то что между ";" - это j. Всегда в первой стоке этой матрицы одна единица, а в остальных по две. |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Допустим, файл содержит ТОЛЬКО вот это:
Цитата 23 45 ;56 34 ;67 87 ; Приведи координаты всех единиц в матрице (в виде a[2][3] = 1, a[3][4] = 1 ...]), и сколько их всего... МЕЖДУ точками с запятой есть по ДВА числа - какое из них определяет координату J ??? |
RebIonok |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Наташа Репутация: ![]() ![]() ![]() |
Вот так оно запишется в матрицу:
a[0][23]=1 a[0][45]=1 a[1][56]=1 a[1][34]=1 a[2][67]=1 a[2][87]=1 |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Теперь ясно
![]() #include <string.h>
#include <stdlib.h>
#include <iostream.h>
#include <fstream.h>
int main() {
int arr[100][100] = {0};
int i = 0, j;
ifstream in_file("pos.txt", ios :: in);
char inBuf[1024], *delimit = " ";
while( !in_file.eof() ) {
in_file.getline(inBuf, 1024, ';');
char *p = strtok(inBuf, delimit);
while(p) {
j = atoi(p);
p = strtok(0, delimit);
arr[i][j] = 1; // Запись в матрицу единицы
}
i += 1;
}
in_file.close();
return 0;
}
Как ты и просила - без классов, но одно НО... Весь файл должен быть записан в одну строку, без символов перевода строки ("\n")... Если такие символы есть, то надо еще немного доработать программу... |
RebIonok |
![]() ![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 7 Пол: Женский Реальное имя: Наташа Репутация: ![]() ![]() ![]() |
Все работает!!! Спасибо...
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 18:26 |