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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Не компилирует в MVS 2008 http://www.cyberforum.ru/cpp-beginners/thread1117690.html
Господамы вот такая программа для проверки устного умножения в MVS 2008 ругается на time, srand и rand, в чем может быть проблема? #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { setlocale (LC_CTYPE, "Russian"); int num1, num2;
C++ Сортировка массива чисел с использованием дерева Всем привет, нужно осуществить сортировку массива, состоящего из чисел, с помощью дерева. То есть я просто создаю дерево, а потом обхожу его. Не так давно начал изучать C++, так что иногда действую очень по Pascal'евски. Вот проблема, при пошаговом проходе программы видно, что моя процедура ADD зацикливается, не могу понять, в чем дело. Возможно, не правильно передаю переменные в процедуры.... http://www.cyberforum.ru/cpp-beginners/thread1117684.html
При вводе элементов массива выводить их тип (или int или float) C++
Помогите с ошибкой, и если не сложно то с заданием а то я вроде сделал только не могу проверить так как крешит прогу( А задание заключаеться в том что нужно при вводе елементов массива выводить их тип или int или float, я вроде сделал проверку, а правильная она или нет не знаю. Помогите если не сложно пожалуйста! #pragma once #include <string.h> #include <iostream> #include <cstdlib>...
C++ Исчезает окно для ввода и вывода
:cry: пишу программу в Win32.программа компилируется,а после черное окошко для ввода и вывода появляется и тут же исчезает!как это предотвратить?
C++ Компьютерная графика. Реализация фигуры додекаэдр http://www.cyberforum.ru/cpp-beginners/thread1117678.html
class MYAPPLICATION : public APPLICATION_3D { ... // Начальные координаты мыши int mX; int mY; // Изменение координат мыши GLfloat rotateX;
C++ Как написать программу для поиска файлов по имени Объясните как написать программу. Есть список в формате txt,в нем названия файлов,нужно из папки выбрать те файлы которых есть в списке txt. подробнее

Показать сообщение отдельно
Rekalibrovka
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 1
12.03.2014, 23:43     Вывод массива из функции С++
Вобщем, нашел код в интернете (консольное приложение) алгоритм Дейкстра
Кликните здесь для просмотра всего текста
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 минут
Большое спасибо) Проблема решена)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru