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

Немного о списках - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оператор цикла while/do while http://www.cyberforum.ru/cpp-beginners/thread723985.html
Всем добрый вечер! Поставили задачу в работающей прграмме, избавиться от метки М1(как следствие goto М1), чтобы программа продолжала работу, не закрывалась после выполнения какого-либо пункта. Посоветовали использовать оператор while/do while, но как, я честно сказать без понятия, помогите пожалуйста!) # include <stdafx.h> # include <iostream.h> // Библиотека ввода-вывода # include <math.h>...
C++ Функция определения длины строки Подскажите, как написать функцию в С++, аналогичную функции strlen(функцию определения длины строки). http://www.cyberforum.ru/cpp-beginners/thread723982.html
C++ Создать файл, состоящий из слов максимальной длины для каждой исходных строк
создать программу читающую файл, состоящий из строк, строки разделены запятыми, и создающую файл,состоящий из слов максимальной длины для каждой исходных строк
Функция разбиения строки на отдельные слова C++
Подскажите, плиз, как написать функцию разбиения строки на отдельные слова. Параметр функции — исходная строка, результат работы — динамический массив строк, каждый элемент которого — очередное слово из исходной строки. По-простому можно считать, что слова в исходной строке отделены друг от друга пробелами (одним или несколькими), по-хорошему — функция должна принимать в качестве второго...
C++ Сортировка столбцов матрицы http://www.cyberforum.ru/cpp-beginners/thread723966.html
Было дано задание: "Написать программу обработки матриц. Программа должна иметь текстовое меню, состоять из подпрограмм. предусмотреть возможность ввода матрицы с клавиатуры и генерации случайных значений и вывод результата обработки на экран. Дано матрицу А порядка NxM. Отсортировать столбцы матрицы по возрастанию их наименьших элементов." Но есть проблема: error C2065: cout«: необъявленный...
C++ два алгоритма одно приложение Здравствуйте. Возможно ли одновременное выполнение двух алгоритмов одним приложением (один main.cpp) и если да, где про это можно почитать? (если я правильно понял мне дорога в раздел многопоточности?) подробнее

Показать сообщение отдельно
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
08.12.2012, 22:04  [ТС]     Немного о списках
Я стараюсь переделать код под свои нужды. Так лучше запоминается
Вопщем нужно, что бы выводил список задом наперёд.

Кликните здесь для просмотра всего текста
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
144
145
146
147
148
149
150
151
152
153
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include  <stdio.h>
#include  <stdlib.h>
#include  <errno.h>
using namespace std;
struct Open_list //open list
{
        int Field;
        Open_list* Next;
}*first;
void Print(int***,int);//Печатает поле с заданным размером.
void add(int***, Open_list** first,int,int,int);//Добавляет элемент в список
void show(Open_list*);//вывод списка
int main()
{
    cout<<"Hello! Print size of the square map (size*size)"<<endl;
    int size;
    cin>>size;
    //создание 3d-поля
    int ***Map;
    Map=new int**[size];
    for(int i=0;i<size;i++) Map[i]=new int*[size];
    for(int i=0;i<size;i++)     
    {
        for(int j=0;j<size;j++)
        {
            Map[i][j]=new int[3];
        }
    }
    //Заполнение поля
    /*cout<<"What type of map you want to choose?"<<endl
        <<"1. Present(1 map)"<<endl
        <<"2. Random filling maps"<<endl
        <<"3. Manual filling maps"<<endl;*/
#if 1
    //Random
    int i,j,k=0;
    srand(time(0));
    //создание стен
for(i=0;;)
    {
        for(j=0;j<size;j++)
        {
            Map[i][j][k]=0;
        }
        break;
    }
for(i=size-1;;)
    {
        for(j=0;j<size;j++)
        {
            Map[i][j][k]=0;
        }
        break;
    }
for(j=0;;)
    {
        for(i=0;i<size;i++)
        {
            Map[i][j][k]=0;
        }
        break;
    }
for(j=size-1;;)
    {
        for(i=0;i<size;i++)
        {
            Map[i][j][k]=0;
        }
        break;
    }
#endif
    //заполнение поля
    for(i=1;i<size-1;i++)
    {
        cout<<endl;
        for(j=1;j<size-1;j++)
        {
            Map[i][j][k]=rand()%2;
        }
    }
    //
    Print(Map,size);//Вывод карты
    //0-свободное поле, 1-препятствие, 2-точка старта, 3-точка финиша,4-путь
    //создание точек старта и финиша
    cout<<endl;
    system("pause");
    int i_s,j_s,i_f,j_f;
    cout<<"Print [i][j] of start-point ";
    cin >>i_s
        >>j_s;
    cout<<"Print [i][j] of finish-point ";
    cin >>i_f
        >>j_f;
    //пометим эти точки и снова напечатаем
    Map[i_s][j_s][0]=2;
    Map[i_f][j_f][0]=3;
    Print(Map,size);//Вывод карты
    //создание списков
    //Открытый и закрытый список созданы
    //
    //добавляем в open_list стартовую точку и её окрестность
    k=0;//так как работаем с первым слоем
    add(Map,&first,i_s,j_s,k);
    for(i=i_s-1;i<=i_s+1;i++)
    {
        for(j=j_s-1;j<=j_s+1;j++)
        {
            if(i!=i_s || j!=j_s)    add(Map,&first,i,j,k); 
        }
    }
    show(first);
    //
    cout<<endl;
    system("pause");
    return 0;
}
 
void Print(int*** Arr,int size)
{
    int i,j,k=0;
    for(i=0;i<size;i++)
    {
        cout<<endl;
        for(j=0;j<size;j++)
        {
            cout<<Arr[i][j][k]<<" ";
        }
    }
}
 
void add(int*** x, Open_list** first,int i,int j, int k) //добавление в список
{
      Open_list* cur = new Open_list;
      cur->Field=x[i][j][k];
      cur->Next=*first;
      *first=cur;
}
 
void show(Open_list* first) //вывод на экран
{
      Open_list* f = first;
      while (f)
      {
              cout<<f->Field<<endl;
              f = f->Next;
     }
}


Добавлено через 17 минут
Я пересмотрел планы. Вот несколько вопросов:
1. Сложно ли переделать список в двунаправленный?
2. можно ли "вручную" перемещаться по списку как по массиву? то есть перематывать указатель.
 
Текущее время: 09:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru