Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Max_Drovosek
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 9
#1

Преобразование информции из текстового файла в двумерный массив - C++

19.02.2012, 00:12. Просмотров 1566. Ответов 10
Метки нет (Все метки)

Есть такая задачка
В visual studio 2008 на С++ нужно рассчитать кратчайший путь от точки к точке в лабиринте. Лабиринт задается в текстовом файле, где ####- границы, пробелы - свободные клетки, а буквы А и В - начало и конец соответственно. Кратчайший путь заполняется точками.
Хочу применить волновой алгоритм, но в текстовом файле...
Вот и главный вопрос: если я могу в горизонтальной строке переходить между клетками, то как можно вертикально переходить между строками? Типа преобразовать текст в двумерный массив, чтобы можно было двумя счетчиками определять колнку и строчку
Это возможно?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 00:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование информции из текстового файла в двумерный массив (C++):

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Двумерный массив (преобразование масиива по заданному условию) - C++
Ввести построчно элементы двумерного массива чисел заданного размера. Вывести значенияэлементов введенного массива. Из столбцов...

Переписать массив строк из файла в двумерный массив - C++
Переписать массив строк из файла в двумерный массив типа CHAR " char Map" вот что получается, как сделать чтоб копировал строку в...

Запись текстового файла в массив - C++
Добрый день! Есть текстовый файл где разделения идут табуляцией, пример: 123 '\t' имя '\t' 767 '\t' дорога ...

С текстового файла прочитать массив - C++
1. С текстового файла прочитать массив. 1ая строка - количество элементов. 2ая строка - сам массив. Посчитать сумму элементов до...

Добавить в конец первого текстового файла содержимое второго текстового файла - C++
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.02.2012, 00:28 #2
Max_Drovosek, покажите пример что у Вас записано в файле?
0
sannee
Просто хороший человек
363 / 156 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 3
19.02.2012, 00:45 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
string str;
int n=15; // размер матрицы 15х15
ifstream base(st);
 
//считываем лабиринт с файла
int j=0;
while (!base.eof())
{
base.getline(str, n+1, '\n');
for(int i=0; i<n; i++){labr[j][i]=str[i];}
j++;
}
0
Max_Drovosek
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 9
19.02.2012, 00:48  [ТС] #4
Примера нету сейчас нормального, чуть позже смогу выложить
0
sannee
Просто хороший человек
363 / 156 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 3
19.02.2012, 00:53 #5
Цитата Сообщение от Max_Drovosek Посмотреть сообщение
##############
# # .......#
# A # .#####.#
# .....# ##.#
######### #..#
# B#.##

# ######..#..#
# # #.###.#
# # .....#
##############
пример дан в блокноте, при вставке чуть сместился
Хотя если скопировать обратно, то получается красиво
читай мой пост. labr - тип char st - путь к файлу
1
Max_Drovosek
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 9
19.02.2012, 00:58  [ТС] #6
Цитата Сообщение от sannee Посмотреть сообщение
читай мой пост. labr - тип char st - путь к файлу
Тоесть теперь i, j - индексы массива и спокойно можно применять волновой алгоритм?
Спасибо большое)
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.02.2012, 00:59 #7
вам лучше немного по другому пути пойти.

сперва простой пример:
вот есть у вас текстовый файл с числами.
вам нужно к каждому числу прибавить еденицу и проапдейтить файл новыми значениями.
так вот в файле всего лишь текстовое представление чисел. в коде же работать с текстовыми представлениями чисел не удобно. их сперва лучше зачитать в интовые числа, прибавить к каждому еденицу и записать обратно в файл в виде текста. работать с строковыми представлениями чисел в программе неудобно. это вроде очевидно.

Теперь к лабиринту:
В файле у вас текстовое представление лабиринта. Считайте этот текст в двумерный массив чаров.
В этом массиве поменяйте значения чаров на нужные вам. Ведь работать с двумерным массивом чаров удобнее, чем с массивом строк. А потом этот массив слейте обратно в файл в виде строк.
0
sannee
Просто хороший человек
363 / 156 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 3
19.02.2012, 01:06 #8
Цитата Сообщение от Max_Drovosek Посмотреть сообщение
Тоесть теперь i, j - индексы массива и спокойно можно применять волновой алгоритм?
Спасибо большое)
да, пожалуйста)
0
Max_Drovosek
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 9
19.02.2012, 01:08  [ТС] #9
Цитата Сообщение от DU Посмотреть сообщение
вам лучше немного по другому пути пойти.

сперва простой пример:
вот есть у вас текстовый файл с числами.
вам нужно к каждому числу прибавить еденицу и проапдейтить файл новыми значениями.
так вот в файле всего лишь текстовое представление чисел. в коде же работать с текстовыми представлениями чисел не удобно. их сперва лучше зачитать в интовые числа, прибавить к каждому еденицу и записать обратно в файл в виде текста. работать с строковыми представлениями чисел в программе неудобно. это вроде очевидно.

Теперь к лабиринту:
В файле у вас текстовое представление лабиринта. Считайте этот текст в двумерный массив чаров.
В этом массиве поменяйте значения чаров на нужные вам. Ведь работать с двумерным массивом чаров удобнее, чем с массивом строк. А потом этот массив слейте обратно в файл в виде строк.
Приятно, когда есть люди, которые грамотно и логично наталкивают на верный путь такого недотепу, как я
вот именно это я и хотел узнать - как считать текст в двумерный массив?
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.02.2012, 01:26 #10
Ну вот как двумерный массив символов можно использовать тип
std::vector<std::string>
Его использование решит проблему неизвестного размера лабиринта.
Сохранить все назад в файл тоже будет очень просто. Так же как и в функции PrintArray. Только вместо экрана будет файловый стрим.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
typedef vector<string> CharArray2D;
 
void PrintArray(const CharArray2D& arr)
{
  for (unsigned i = 0; i < arr.size(); ++i)
    cout << arr[i] << endl;
}
 
void ProcessArray(CharArray2D& arr)
{
  // Вот тут синтаксис такой же как и при работе с двумерным массивом.
 
  for (unsigned i = 0; i < arr.size(); ++i)
  {
    for (unsigned j = 0; j < arr[i].size(); ++j)
    {
      arr[i][j] = 'a';
    }
  }
}
 
void ReadArray(CharArray2D& arr)
{
  // Вот тут вместо захардкоженного заполнение массива строками нужно по строке читать из файла
  // и пушить их в такой вот вектор. Код чтения строк из файла уже есть.
 
  CharArray2D tmp;
  tmp.push_back("123");
  tmp.push_back("456");
  tmp.push_back("789");
  arr.swap(tmp);
}
 
int main()
{
  CharArray2D arr;
  ReadArray(arr);
  PrintArray(arr);
 
  ProcessArray(arr);
  PrintArray(arr);
 
  return 0;
}
1
Max_Drovosek
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 9
19.02.2012, 01:34  [ТС] #11
Сейчас буду разбираться
Спасибо огромное!!!

Добавлено через 3 минуты
Спасибо огромнейшее!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2012, 01:34
Привет! Вот еще темы с ответами:

Считать данные текстового файла в массив - C++
Здравствуйте знатоки. Есть файл file.txt в котором содержатся числа например массив из 5 символов (сам массив не определён и чисел на...

Добавление информации из текстового файла в массив - C++
Надо сделать так, что бы текстовый документ с текстом появлялся в консоли(то есть содержимое блокнота).C++

Массив(матрица) считывающийся с текстового файла - C++
Здравствуйте, нужно описать статический массив который будет считываться с текстового файла, а я вообще не понимаю как это делается....

Чтение из текстового файла массив структур - C++
Доброго времени суток. Нужно из текстового файла заполненного по типу ( Фио Диагноз числопоступления пол ) занести информацию в бинарный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.02.2012, 01:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru