Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамические массивы и функции. Динамические массивы. https://www.cyberforum.ru/ cpp-beginners/ thread298813.html
Дана матрица 6х8 целого типа. Создать одномерный массив, содержащий элементы матрицы, кратные числу, введенному с клавиатуры.
Не могу вызвать функцию через указатель C++
Есть функция void matrixsqr(int **a, int N, int M) как ее вызвать через указатель на функцию Добавлено через 18 минут Неужели никто не знает
C++ Написать программу шифрования и дешифрования методом подстановки Написать программу шифрования и дешифрования методом подстановки!!! https://www.cyberforum.ru/ cpp-beginners/ thread298794.html C++ решить через классы https://www.cyberforum.ru/ cpp-beginners/ thread298791.html
Напишите программу, в которой класс tools представляет учетные карточки выданных инструментов. В карточке хранятся фамилия получателя, название, учетный код и количество выданных экземпляров инструмента. Функция main ( ) должна продемонстрировать работу с этой картотекой – создание, заполнение и просмотр карточек
Программа не работает C++
Я написал пример так как он в методе, а мне выбивает ошибку... может потому что у меня DEV C++? Ошибки не могу разобрать Пример программы построения графика функции f(x)=(sin(x/2)*х при x= #include<stdio.h> #include<string.h> #include<conio.h>
C++ Алгоритм Хоспула https://www.cyberforum.ru/ cpp-beginners/ thread298757.html
Задача: поиск подстроки в строке с помощью алгоритма Хорспула. Строка задаётся из 10 млн случайных символов. Подстрока состоит, например, из 1 млн символов. А проблема в том, что алгоритм Хорспула ни в какую не хочет работать при случайном наборе строк. Но работает нормально, если строки вручную вводишь. Может кто подскажет в чём проблема? #include <iostream> #include <string> using namespace...
C++ кольцевой список. STL В общем, есть такая проблема. Нужно реализовать кольцевой список, удовлетворяющий требованиям STL. То есть, он должен работать со всеми алгоритмами. Вопрос в том, как реализовать метод end(), который должен возвращать элемент, следующий за последним. И при этом, для итератора, указывающего на последний элемент, it++ должен возвращать итератор на первый элемент. https://www.cyberforum.ru/ cpp-beginners/ thread298754.html Найти сумму элементов массива с нечетными номерами C++
помогите пожалуйста с задачей! В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму элементов массива с нечетными номерами; 2) сумму элементов массива, расположенных между первым и последним отрицательными элементами. Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями. вот что...
C++ Не работает цикл!!! Help!!!!! Почему не считает цикл... опять где-то ошибся #include<conio.h> #include<stdio.h> #include<math.h> #include<iostream> using namespace std; int main() { int schet=1, pered; https://www.cyberforum.ru/ cpp-beginners/ thread298738.html C++ Не знаю как исправить ошибку в программе Добрый день. Вот код программы: #pragma argsused #include <iostream.h> #include <time.h> #include <conio.h> void insert (int *a, int n) // ФУНКЦИЯ ВСТАВОК { int i, j, t; // объявление переменных for (i=1; i<n; i++) https://www.cyberforum.ru/ cpp-beginners/ thread298726.html
Точка лежит ли в кольце окружности C++
Всем привет.Подскажите пожалуйста где здесь ошибка. #include <windows.h> #include<iostream> using namespace std; void main () {SetConsoleOutputCP(1251); int y,z,x,c,a,b,n,m,k; cout<<"Введите кординаты точки А"<<endl; cin>>y;
C++ Использование возвращенного двумерного массива. https://www.cyberforum.ru/ cpp-beginners/ thread298715.html
Доброго времени суток. Проблема такая. int *roc(int a) { //тут преобразования return *a; } void main
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
0

Волновой алгоритм - C++ - Ответ 1664234

18.05.2011, 16:56. Показов 5654. Ответов 4
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, дорогие форумчане.
Никак не додумаю волновой алгоритм, помогите, кто чем может:
файл - матрица целых чисел, где минимальное число - начало, а начало+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
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
using namespace std;
    int** file(int &m);//Считывание карты    
    void show(int** map,int m);//вывод карты
    int** mapcpy(int** map,int m);//копирование исходной карты
    void findcoords(int &xs,int &ys,int &xe,int &ye,int m,int **map);// нахождение начала-конца
void main()
{
    int W=0; //номер волны
    const int Wmax=300; //max кол-во итераци
    int m=0,is,js,ie,je;//координаты начала-конца
    int **map;
    map=file(m);//получили карту
    show(map,m);
    findcoords(is,js,ie,je,m,map);//определили начало-конец
    const int n=m;
    int** mapping=mapcpy(map,n);//копируем исходную карту (для проложения пути нужно будет)
    //--------------------------------------------------------------------
    while (W!=Wmax)
    {
        for (int i=is; i<m; i++)
        {
            for (int j=js; j<m; j++)
                 if(map[i][j]==W && i<m-1 && j<m-1)
                    {
                     if (map[i][j+1]!=-1||map[i][j+1]!=0)
                        map[i][j+1]=map[i][j+1]+W;
                     if (map[i+1][j]!=-1||map[i+1][j]!=0)
                        map[i+1][j]=map[i+1][j]+W;
                     if (map[i+1][j]!=-1||map[i+1][j]!=0 && i!=0 && j!=0)
                     }
        }
        W++;
    }
    //-------------------------------------------------------------------
cout<<"\nЛабиринт после алгоритма:"<<"\n \n";
show(map,m);
}
int** file(int &m)
{
    int **map;
    FILE* f;
    int i,j;
    char fname [80];
    cout<<"\nИмя (путь) к файлу: ";
    gets(fname);
    f=fopen(fname,"rt");
    if(f)
    {
        while(!feof(f))
        {
            if(fgetc(f)=='\n')
                m++;//Подсчет размера карты
        }
        fseek(f,0,SEEK_SET);
        map=new int* [m];
        for(i=0;i<m;i++)
            map[i]=new int [m];
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
                fscanf(f,"%d",&map[i][j]);
        }
        fclose(f);
        return map;
    }
}
void findcoords(int &is,int &js,int &ie,int &je,int m,int **map)
{
    int s=map[0][0],e;
    is=js=ie=je=0;
      for (int i=0; i<m; i++)
        {for (int j=0; j<m; j++)
            {
            if (map[i][j]<s)//начало = минимальное число
                {
                    s=map[i][j]; 
                    is=i;
                    js=j;
                }
             }
      }
       for (int k=0; k<m; k++)
        {for (int l=0; l<m; l++)
            {
            if (map[k][l]==s+1)//конец=начало+1
                {
                    e=map[k][l];
                    ie=k;
                    je=l;
                    return;
                }
                
             }
      }
}
void show(int** map,int m)
{
for(int i=0; i<m; i++)
     {for(int j=0; j<m; j++)
        cout<<map[i][j]<<"\t"; 
    cout<<endl<<endl<<endl;
     }
 system ("pause");
 return;
}
int** mapcpy(int** map,int n)
{
    int** mapping;
    mapping=new int* [n];
    for(int i=0; i<n; i++)
    {
        mapping[i]=new int [n];
        for(int j=0; j<n; j++)
            mapping[i][j]=map[i][j];
     }
return mapping;
}


Вернуться к обсуждению:
Волновой алгоритм C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2011, 16:56
Готовые ответы и решения:

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab...

Волновой алгоритм
Здравствуйте, очень прошу помочь с реализацией волнового алгоритма только лишь с помощью матрицы...

Волновой алгоритм
Подскажите пожалуйста, на сколько сложно изготовить из матрицы 0000 0000 0000 напр.4345 3234...

Волновой алгоритм
Нужно найти кратчайший путь в лабиринте размерностью 10х10 , и выводить ответ. Помогите

4
18.05.2011, 16:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2011, 16:56
Помогаю со студенческими работами здесь

Волновой алгоритм
Скажите почему программа зацикливается. #include&lt;bits/stdc++.h&gt; using namespace std; int a =...

Волновой алгоритм
Нужно реализовать волновой алгоритм поиска кратчайшего пути на поле 20*20, причем координаты начала...

Лабиринт - волновой алгоритм
Помогите пожалуйста. Я написал код, который мне выведет на экран кратчайший путь... Но чего-то не...

Tiled Map и волновой алгоритм
Делаю игру пакман. Нашла, что для привидений хорошо подходит волновой алгоритм. Нашла примеры...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru