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

Ввод двумерного массива из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Блок-схема http://www.cyberforum.ru/cpp-beginners/thread888218.html
Доброго дня,всем...Помогите пожалуйста составить 2 простенькие блок-схемы по следующим прогам #include<stdio.h> #include<iostream.h> #include<math.h> #include<stdlib.h> int main() { FILE *vivod; vivod=fopen("D:\lab2_11.txt","w");
C++ Инвентаризация В инвентарном файле содержатся сведения о том, изделия каких видов продукции и в каком количестве хранились на складе на момент последней инвентаризации. Сведения включают артикул изделия, наименование, единицы измерения, количество. Второй файл содержит сведения о поступлении и отпуске некоторых видов продукции, структура данных здесь дополнена типом операции (поступление или отпуск) и датой ее... http://www.cyberforum.ru/cpp-beginners/thread888212.html
C++ Дана строка символов. Подсчитать общее число вхождений символов
Привет всем. Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку. Помогите реализовать данную программу. Нашел пару вариантов на форуме типа: #include <iostream> #include <iomanip> char * findchar(char * str, char ch){ for(;*str;++str) if (*str==ch) return str; return NULL;
Вывести всех однофамильцев C++
Есть массив обьектов. Надо вывести всех однофамильцев по очереди. я сделал так что береться первый елемент(первый цикл), и проверяеться со всеми остальними(второй цикл), если елемент подошел то помечаем провереным. когда мы сравним первый елемент он будет тоже "помечен" как провереный. И так дальше. А оно сначала выводит однофамильцев, а потом все остальное. #include <fstream> #include...
C++ Задачка про IP сети, работа с массивами http://www.cyberforum.ru/cpp-beginners/thread888195.html
Помогите пожалуйста %) Задача Перед министерством страны стоит задача: объединить все IP адреса, которые есть в стране, в наименьшую возможную сеть. Для этого работники переписали все IP адреса, которые только были в стране. Однако некоторые адреса были переписаны несколькими людьми, что усложняет вашу задачу. IP адрес - это 4 числа, которые записаны через точку, в десятичной системе...
C++ Можно ли распарсить XLS файл? Всем добрый день хотел задать вопрос, можно ли распарсить XLS файл средствами C++? Заранее спасибо. подробнее

Показать сообщение отдельно
Prokill1
0 / 0 / 0
Регистрация: 15.10.2011
Сообщений: 12

Ввод двумерного массива из файла - C++

02.06.2013, 17:04. Просмотров 423. Ответов 1
Метки (Все метки)

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include "stdafx.h"
#include <stack>
#include <iostream>
#include <string>
#include <algorithm>
#include <locale>
 
const int OPEN_VAL   =  0;
const int CLOSE_VAL  =  1;
const int START_VAL  = -1;
 
struct T_cell
{
    int i_;
    int j_;
    T_cell(int i, int j) : i_(i), j_(j)
    {}
 
    bool operator==(const T_cell& c)
    {
        return i_ == c.i_ && j_ == c.j_;
    }
 
    bool operator!=(T_cell c)
    {
        return !(*this == c);
    }
};
 
struct T_path_node
{
    T_cell  prev_cell_;
    T_cell  cur_cell_;
 
    T_path_node
        (
            T_cell  prev_cell,
            T_cell  cur_cell
        ) : prev_cell_(prev_cell), cur_cell_(cur_cell)
    {}
};
 
std::ostream& operator<<(std::ostream& os, const T_cell&  cell)
{    
    os << "(" << cell.i_ << ", " << cell.j_ << ")";
    return os;
}
 
 
typedef std::stack<T_path_node>  T_path_stack;
 
bool fill_stack(T_path_stack&  path_stack)
{    
    const int m = 9;
    const int n = 9;
    int labirint[][n] = {{1, 1,  1, 1,  1, 0, 1, 1, 1},
                         {1, 0,  0, 0,  1, 0, 1, 0, 1},
                         {1, 0,  1, 0,  0, 0, 1, 0, 1},
                         {1, 0,  1, 0,  1, 0, 1, 0, 1},
                         {1, 0,  0, 0,  0, 0, 1, 0, 1},
                         {1, 0,  1, 1,  1, 1, 1, 0, 1},
                         {1, 0,  0, 1,  0, 0, 0, 0, 1},
                         {1, 1,  0, 0,  0, 1, 1, 1, 1},
                         {1, 1,  1, 1, -1, 1, 1, 1, 1}};
 
     
    for(int cur_cell_val = START_VAL; ; --cur_cell_val)
    {       
        int  start_stack_size = path_stack.size();
        for(int i = 0; i < m; ++i)
        {
            for(int j = 0; j < n; ++j)
            {
                if(labirint[i][j] == cur_cell_val)
                {
        
                    for(int  i_sosed = std::max(i - 1, 0);
                        i_sosed <= std::min(i + 1, m - 1); ++i_sosed)
                    {
                        for(int  j_sosed = std::max(j - 1, 0);
                            j_sosed <= std::min(j + 1, n - 1); ++j_sosed)
                        {
                            if((i_sosed == i || j_sosed == j)
                                && labirint[i_sosed][j_sosed] == OPEN_VAL)
                            {
                                labirint[i_sosed][j_sosed] = cur_cell_val - 1;                        
                                path_stack
                                    .push(                                             
                                             T_path_node(
                                                           T_cell(i, j),                                                            
                                                           T_cell(i_sosed, j_sosed)
                                                        )
                                         );                       
                                if(i_sosed == 0 || i_sosed == m - 1
                                   || j_sosed == 0 || j_sosed == n - 1)
                                {                            
                                    return true;
                                }
                            }
                        }                 
                    }
                }
            }    
        }  
        if(path_stack.size() == start_stack_size) return false;
    }
}
 
void print_path(T_path_stack  path_stack)
{
    std::cout << "Маршрут в лабиринте от выхода до стартовой клетки:" << std::endl;
    for(;;)
    {
        T_cell  prev_cell = path_stack.top().prev_cell_;
        std::cout << path_stack.top().cur_cell_ << std::endl;
        if(path_stack.size() == 1)
        {
            std::cout << path_stack.top().prev_cell_ << std::endl;    
            return;
        }
        while(path_stack.top().cur_cell_ != prev_cell)
        {
            path_stack.pop();      
        }
    }
}
 
int main()
{
    std::locale::global(std::locale("rus"));
    T_path_stack  path_stack;
 
    if(!fill_stack(path_stack))
    {
        std::cout << "Нет выхода!"
                  << std::endl;    
    }
    else
    {        
        print_path(path_stack);
    }
    return 0;
}
в данной программе матрица дана в коде
к сожалению понадобилось вывести матрицу из файла input.txt, 9х9
помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru