Форум программистов, компьютерный форум, киберфорум
Наши страницы

Считать данные из файла в динамический массив соответствующего типа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Погрешность интерполяции на C++ http://www.cyberforum.ru/cpp-beginners/thread305474.html
написал код для интерполяционного полинома Ньютоно, он работает правильно, но вот никак не могу разобратса как обчислить его погреность погреность находитса за данной формулой ...
C++ Шаблонный класс: динамический числовой массив увеличиваемого размера привет помогите реализовать программу на шаблоны пожалйста: Реализовать динамический числовой массив увеличиваемого размера как класс шаблон. Класс должен иметь перегруженный оператор... http://www.cyberforum.ru/cpp-beginners/thread305449.html
C++ Двудольный граф??
Проверка является ли граф двудольным))
C++ Корректный ввод структуры и ее обработка
Добрый день. Есть вопрос, как мне правильно ввести структуру, что бы потом корректно с ней работать. Задание:Нужно составить структуру данных и организовать соответствующую обработку данных. ...
C++ Последовательность http://www.cyberforum.ru/cpp-beginners/thread305433.html
Даны натуральные числа n, а1 ..., an. Получить произведение членов последовательности а1, ..., an, удовлетворяющих условию 2^n<an<n! Только не через массив, а цикл for Помогите, пожалуйста,...
C++ Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю элемент Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю элемент подробнее

Показать сообщение отдельно
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
16.06.2011, 12: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
#include "stdafx.h"
#include <stdlib.h>
 
// создаю структуру - элемент очереди.
struct elem 
{
   int d;//Хранимая цифра.
   elem * next_elem;//Указатель на сл. элемент
   elem()//Конструктор по умолчанию. Вызывается при создании нового элемента очереди.
   {
           next_elem = NULL;
   }
 
};
//структура-очередь. У очереди добавление элемента происходит с одного конца, а удаление с другого. Для этого храню указатели на оба конца.
struct list
{
        elem * first_elem;
        elem * last_elem;
        list()//Конструктор по умолчанию. 
        {
                first_elem = last_elem = NULL;
        }
};
 
//Добавление в очередь элемента с заданной цифрой.
bool add(list ** l,int d)
{
        elem * new_elem = new elem();//Создаю новый элемент очереди.
        if(new_elem == NULL)//Проверяю, создан ли он.
                return false;
        new_elem->d = d;//Присваиваю цифре элемента значение заданной цифры.
        if((*l)->last_elem)//Проверяю, есть ли в очереди другие элементы.
                (*l)->last_elem->next_elem = new_elem;//Если есть, то делаю новый элемент потомком последнего элемента.
        else
                (*l)->first_elem = new_elem;//Если нет, то делаю новый элемент первым в очереди.
        (*l)->last_elem = new_elem;//Делаю новый элемент последним в очереди.             
        return true;
}
//Добавление в очередь уже существующего элемента.
void add(list ** l,elem * new_elem)
{
        new_elem -> next_elem = NULL;//Нам не нужны его потомки.
        if((*l)->last_elem)
                (*l)->last_elem->next_elem = new_elem;
        else
                (*l)->first_elem = new_elem;
        (*l)->last_elem = new_elem;             
}
//Удаление элемента.
void del (list ** l)
{
        if((*l)->first_elem)//Удаление происходит если очередь не пуста.
        {
                elem * ptr = (*l)->first_elem;//Сохраняю указатель на первый элемент.
                (*l)->first_elem = (*l)->first_elem->next_elem;//Делаю второй элемент в очереди первым.
                delete ptr;//Освобождаю память из под первого элемента.
        }
}
//Разбиваю по двум др. очередям.
void sort(list ** l_1,list ** l_2,list ** l_3)
{
        int i = 1;//Порядковый номер элемента. 
        elem * ptr = (*l_1)->first_elem;//Создаем указатель и присваиваем ему значение первого элемента очереди.
        while(ptr)//Проверяем, существует ли элемент.
        {
                if(i%2)//Если порядковый номер элемента кратен 2, то добавляем в первый список.
                        add(l_2,ptr);
                else//Если нет, то добавляем в второй список.
                        add(l_3,ptr);
 
                ptr = ptr->next_elem;//Переходим к сл.элементу очереди.
                ++i;//Увеличиваем номер элемента.
        }
}  
 
int main(int argc, char *argv[])
{
//Создаем 3 очереди.
        list * l = new list();
        list * l_1 = new list();
        list * l_2 = new list();
//Добавляем элементы в первую.
        for(int i = 0; i < 10; ++i)
        {
                if(!add(&l,rand()))
                        printf("Add() error\n");
        }
//Выводим первую очередь.
        elem * ptr = l->first_elem;
        while(ptr)
        {
                printf("%d\n",ptr->d);
                ptr = ptr->next_elem;
        }
//Разкидываем по 2 ост.очередям.
        sort(&l,&l_1,&l_2);
 
        printf("\n\n");
//Выводим остальные 2 очереди. 
        ptr = l_1->first_elem;
        while(ptr)
        {
                printf("%d\n",ptr->d);
                ptr = ptr->next_elem;
        }
 
        printf("\n\n");
 
        ptr = l_2->first_elem;
        while(ptr)
        {
                printf("%d\n",ptr->d);
                ptr = ptr->next_elem;
        }
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru