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

Разобраться в функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Компилятор С++ http://www.cyberforum.ru/cpp-beginners/thread638093.html
Скажите, пожалуйста, каким редактором для написания кода вы пользуетесь, и какой компилятор используете? Напишите недостатки и преимущества вашего выбора. Я начинающий программист, пишу и компилирую в оболочке DOSBox на Borland C++ 3.1 Преимущество выбора в том ("выбор" - это громко сказано, я больше не знаю с чем можно работать, а хочу узнать), что после написания кода можно его...
C++ Условие: если строка пустая - выполнить действие Здравствуйте, если можете, помогите создать такое условие: "Условие: если строка пустая - выполнить действие...", на основе этого кода: #include <iostream> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread638087.html
C++ Сортировка слиянием (рекурсивный метод) текстовой строки
Привет всем. Возникла трудность не понимаю как отсортировать методом слияний (рекурсивным методом) текстовую строку. К примеру дана строка qwerty qwe qwert qwer И должно получиться следующее qwe qwer qwert qwerty Ребят помогите пожалуйста с алгоритмом
Ошибка: Stack was corrupted C++
Здравствуйте уважаемые программисты. Написал простейшую программу заполнения массива и вывода его на консоль. Но при запуске вылазит ошибка (см. прикреплённый файл). Объясните пожалуйста в чём дело? Вот код: #include <iostream> using namespace std; int main() { int mas1; //Получение простых чисел в диапазоне от 2 до 199. for (int i=0; i<=7; i++)
C++ Операторы ввода и вывода http://www.cyberforum.ru/cpp-beginners/thread638040.html
Допустим есть класс class Checked { public: private: double id; int *beg; std::pair<std::strin, std::strin> par;
C++ Деревья Знаю пару тройку фундаментальных структур на основе дерева: красно-черное дерево бинарное древо поиска AVL дерево 2 - 3, 2 - 3 - 4 дерево H дерево Вопрос: подскажите фундаментальные структуры на основе дерева, которые не входят в этот список, для дальнейшего рассмотрения. подробнее

Показать сообщение отдельно
Deep_sea
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 9
15.08.2012, 18: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
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
double** construct_array();
/*void destruct_array(double**);*/
void print_array(double**);
 
int main()
{
    double** array;
 
    array=construct_array();
    print_array(array);
 
    system("pause");
 
    return 0;
}
 
double** construct_array()
{
    double** array;
 
    int rows, columns;
 
    do
    {
        cout<<"Input the integer number of rows"<<endl;
        cin>>rows;
    }
 
    while(rows<1||rows>10);
 
    array=(double**)malloc(sizeof(double*)*rows+sizeof(int));
    ((int*)array)[0]=rows;
    (*(int*)(array))++;
 
    for (int i=0; i<rows; i++)
    {
        columns=rand()%10+1;
        array[i]=(double*)malloc(sizeof(double)*columns+sizeof(int));
        ((int*)(array[i]))[0]=columns;
        (*(int*)(array[i]))++;
 
        for (int j=0; j<columns; j++)
        {
            double array_sign;
            do
                {
                    cout<<"Input the double number element"<<" Array"<<"["<<i<<"]["<<j<<"]"<<endl;
                    cin>>array_sign;
                }
 
                while(array_sign<1||array_sign>10);
            array[i][j]=array_sign;
        }
    }
 
    return array;
}
 
 
void print_array(double **array)
{
   int rows, columns;
 
   rows=((int*)array)[-1];
 
 
   for(int i=0; i<rows; i++)
       {
       columns=((int*)(array[i]))[-1];
       for(int j=0; j<columns; j++)
          cout<<array[i][j];
       cout<<endl;
       }
}
Вот мой код, а тот предыдущий пример другого варианта.
Полный код примера, он на C:

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
#include<stdlib.h>
#include"stdio.h"
#include<conio.h>
// Прототипы своих функций
void PrintArray(double **p);
double ** ConstructArray();
void DestructArray(double **p);
//******************************************************************
void main(void)
{
// указатель на вектор указателей на строки
double **pA;
clrscr(); // очистка экрана
// построит массив и вернет указатель на него
pA=ConstructArray();
// выведет массив на экран
    PrintArray(pA);
// освободит память
DestructArray(pA);
// подождет нажатия клавиши
getch();}
//******************************************************************
// Функция запрашивает необходимую информацию и строит рваный массив.
//   Возвращает   указатель   на   него.   Количество   строк   хранится   в   «минус первом» 
// элементе вектора указателей на строки, а в «минус первом» элементе каждой 
// строки – количество. Элементов в строке
double ** ConstructArray()
{
double ** p=NULL;
int N, M; // количество строк, элементов в строке
// вводим корректное количество строк
do
{
printf("\nProgram makes an array of N rows.\n");
printf("Please, enter N (1<=N<=10): ");
scanf("%d", &N);
}while(N<1 || N>10);
// выделяем память
p=(double **)malloc( sizeof(double *)*N + sizeof(int));
// запоминаем в «минус первом» элемент вектора указателя на строки
((int *)p)[0]=N;
// сдвигаем указатель
((int *)p)++;
// Организуем построчный ввод
for(int i=0; i<N; i++)
{
// вводим корректное количество элементов в строке
do
{
printf("\nEnter M - number of elements in %d-th row (1<=M<=10): ", i);
scanf("%d", &M);
}while(M<1 || M>10);
// выделяем память
p[i]=(double *)malloc( M*sizeof(double) + sizeof(int));
// записываем в -1 элемент
((int *)(p[i]))[0]=M; 
// сдвигаем указатель
((int *)(p[i]))++;    
for(int j=0; j<M; j++) // вводим элементы
{
double m;
do
{
printf("\nEnter A[%d][%d] (1<=A[%d][%d]<=10): ", i, j, i, j);
scanf("%lf", &m);
}while(m<1 || m>10);
p[i][j]=m;
}
}
return p; // вернуть указатель на сконструированный массив
}
void DestructArray(double **p)
{
if(!p) return;// проверка корректности
int N; // количество строк
N=((int *)p)[-1];
for(int i=0; i<N; i++)
{
((int *)(p[i]))--;
free(p[i]); // удалить каждую ненулевую
}
((int *)p)--;  // смещаем указатель на место
free(p); // освобождаем память
}
//******************************************************************// Функция выводит на экран рваный массив
void PrintArray(double **p)
{
int N, M; // количество строк, столбцов
N=((int *)p)[-1];
for(int i=0; i<N; i++)
{
M=((int *)(p[i]))[-1];
for(int j=0; j<M; j++) printf("%-6.2lf", p[i][j]);
printf("\n");
}
}
 
Текущее время: 23:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru