Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 1

Вывод массива из функции С++

12.03.2014, 23:43. Показов 1352. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вобщем, нашел код в интернете (консольное приложение) алгоритм Дейкстра
Кликните здесь для просмотра всего текста
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
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define word unsigned int
 
int i, j, n, p, xn, xk;
int flag[11];
word c[11][11], l[11];
char s[80], path[80][11];
 
int min(int n){
    int i, result;
    for(i=0;i<n;i++)
        if(!(flag[i])) result=i;
    for(i=0;i<n;i++)
        if((l[result]>l[i])&&(!flag[i])) result=i;
    return result;
}
 
word minim(word x, word y){
    if(x<y) return x;
    return y;
}
 
void main(){
    cout<<"Vvedite kolichestvo tochek: ";
    cin>>n; 
    for(i=0;i<n;i++)
        for(j=0;j<n;j++) c[i][j]=0;
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++){
            cout<<"Vvedite rasstoyanie ot  x"<<i+1<<" do x"<<j+1<<": ";
            cin>>c[i][j];
        }
    cout<<"   ";
    for(i=0;i<n;i++) cout<<"    X"<<i+1;
    cout<<endl<<endl;
    for(i=0;i<n;i++){
        printf("X%d",i+1);
        for(j=0;j<n;j++){
            printf("%6d",c[i][j]);
            c[j][i]=c[i][j];
        }
        printf("\n\n");
    }
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            if(c[i][j]==0) c[i][j]=65535; //бесконечность
    cout<<"Vvedite nachalnuy tochku: ";
    cin>>xn;
    cout<<"Vvedite konechnuy tochku: ";
    cin>>xk;
    xk--;
    xn--;
    if(xn==xk){
        cout<<"Nachalnaya I konechnaya tochki sovpadayt."<<endl;
        getch();
        return;
    }
 
    for(i=0;i<n;i++){
        flag[i]=0;
        l[i]=65535;
    }
    l[xn]=0;
    flag[xn]=1;
    p=xn;
    itoa(xn+1,s,10);
    for(i=1;i<=n;i++){
            strcpy(path[i],"X");
            strcat(path[i],s);
        }
    do{
        for(i=0;i<n;i++)
            if((c[p][i]!=65535)&&(!flag[i])&&(i!=p)){
                if(l[i]>l[p]+c[p][i]){
                        itoa(i+1,s,10);
                        strcpy(path[i+1],path[p+1]);
                        strcat(path[i+1],"-X");
                        strcat(path[i+1],s);
                    }
                l[i]=minim(l[i],l[p]+c[p][i]);
            }
        p=min(n);
        flag[p]=1;
    }
    while(p!=xk);
    if(l[p]!=65535){
        cout<<"Put: "<<path[p+1]<<endl;
        cout<<"Dlina puti: "<<l[p]<<endl;
    }
    else
        cout<<"takogo puti ne syshestvuet!"<<endl;
    getch();
}


по аналогии нужно сделать в Visual C++ CLR...
функции оставил те же самые, кроме main(), ее хотел завернуть в отдельную функцию. Возникла проблема с выводом результатов... Вывести значение l[p] смог, но вот с path[p+1] проблема(( 3-й день туплю...

Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include "Form1.h"
 
int flag[MAX_NODES];
int distance[MAX_NODES][MAX_NODES];
int l[MAX_NODES];
char s[2*MAX_NODES];
char path[3*MAX_NODES-1][MAX_NODES];
using namespace System::Windows::Forms;
int min(int nodes){
    int i, result;
    for(i=0;i<nodes;i++)
        if(!(flag[i])) result=i;
    for(i=0;i<nodes;i++)
        if((l[result]>l[i])&&(!flag[i])) result=i;
    return result;
}
 
int minim(int x, int y){
    if(x<y) return x;
    return y;
}
 
char *output(char *sub){
    static char s[119];
    if (sub == NULL)
        return sub;
    sprintf(s, "%s%s%s", "1", sub, "3");
    return s;
}
 
int deicstra_l(int source, int sink, int nodes){
    int i;
    for(i=0;i<nodes;i++){
        flag[i]=0;
        l[i]=INF;
    }
    l[source]=0;
    flag[source]=1;
    int p=source;
    _itoa_s(source+1,s,10);
        for(i=1;i<=nodes;i++){
            strcpy_s(path[i],"X");
            strcat_s(path[i],s);
        }
        do{
            for(i=0;i<nodes;i++)
                if((distance[p][i]!=INF)&&(!flag[i])&&(i!=p)){
                    if(l[i]>l[p]+distance[p][i]){
                        _itoa_s(i+1,s,10);
                        strcpy_s(path[i+1],path[p+1]);
                        strcat_s(path[i+1],"-X");
                        strcat_s(path[i+1],s);
                    }
                    l[i]=minim(l[i],l[p]+distance[p][i]);
                }
            p=min(nodes);
            flag[p]=1;
        }
        while(p!=sink);
        if(l[p]!=INF){
            int out_l = l[p];
            //char out_path = path[p+1];
            char * put = new char[119]; //вот здесь проблема
            strcpy_s(put, 119, output(path[p+1]));
            
            MessageBox::Show("Путь: " + (*put).ToString(), "Error",MessageBoxButtons::OK,MessageBoxIcon::Error);
            return out_l;
        }else{
            return 0;
        }
}


Перепробовал кучу способов, но либо у меня руки не из того места, либо нужно поесть))
Microsoft Visual Studio 2010, если вдруг нужно будет

Добавлено через 1 час 29 минут
Большое спасибо) Проблема решена)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2014, 23:43
Ответы с готовыми решениями:

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива.
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом провести транспонирование.

Открытые функции класса: ввод массива, вывод массива, определение длины вектора
Данные класса: массив N(10). Открытые функции класса: ввод массива, вывод массива, определение длины вектора. Длина массива определяется...

Вывод массива из функции
Доброй ночи. Подскажите пожалуйста как вывести массив из функции, не могу сообразить как это сделать. using namespace std; int...

2
Студент
 Аватар для _include
56 / 56 / 38
Регистрация: 17.09.2012
Сообщений: 292
Записей в блоге: 2
13.03.2014, 06:43
Rekalibrovka, отпишитесь, как решили, вдруг кто-нибудь будет и кать
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
13.03.2014, 07:06
Цитата Сообщение от Rekalibrovka Посмотреть сообщение
по аналогии нужно сделать в Visual C++ CLR...
тогда и писать нужно в соответствующий раздел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2014, 07:06
Помогаю со студенческими работами здесь

вывод массива из функции
как можно передать массив optimal из функции #include&lt;iostream&gt; using namespace std; const int m1=1,m2=2,m3=3,r1=30,r2=60,r3=80; ...

Вывод массива из функции
Здравствуйте! Искал ответ на сайтах, но никак не получается найти свой случай. Хочу переписать массив из функции в переменную(тоже...

Вывод массива из функции.
В функции формируется массив из бд, его необходимо вернуть из функции. Мне не понятно как это сделать. function word() { ...

Вывод данных массива из функции
Я вызываю функцию из main, в этой отдельной функции мне нужно заполнить массив на 10 чисел и вернуть обратно в main уже заполненный массив....

Вывод массива из функции с рекурсией
Подскажите почему функция сортировки void vyvod_hoara не выводит результат сортировки после работы функции void hoara #include...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru