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

Задание на работу со односвязными списками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Генерация псевдоравномерных чисел. В чем ошибка? http://www.cyberforum.ru/cpp-beginners/thread952152.html
Написал метод для генерации псевдоравномерных чисел. Для проверки считается математическое ожидание (среднее арифметическое). Т.к. интервал генерируемых чисел от 0 до 1, то M = 0,5. После подсчета выдает M = 0,425 что далеко от эталона. Алгоритм проверял, но не нашел в чем косяк. Ниже приведен алгоритм и код программы. Алгоритм имитации квазиравномерных чисел сводится к выполнению следующих...
C++ Вычислить функцию и вывести значения в виде таблицы. Ошибка "Undeclared identifier" Задание: написать программу, которая должна работать при разных значениях параметров, введенных пользователем. В программе определить структуру с полями a, b, x1, x2 типа double с указателем на массив значений типа float. В этот массив занести значения функции на интервале от x1 до x2 с шагом dx. Результат вывести на экран в виде таблицы Функция: f(x)=1/(ax)-b при x<=2 f(x)=(x-a)/x при x>-2... http://www.cyberforum.ru/cpp-beginners/thread952145.html
C++ 18. Написать программу, которая решает уравнение с одним неизвестным и выводит в консоль значение неизвестного. Уравнение посимвольно вводится с клави
#include <iostream> using namespace std; void main() { int urov1 = 0; int urov2 = 0; int urov3 = 0; float stad = 0; cout << "Enter the number of: ax="; cin >> urov1;
Прокомментируйте пожалуйста C++
Не до конца понимаю код программы. Прошу дать комментарии к коду. #include "stdafx.h" #include <iostream> #include<math.h> using namespace std; int main() { const int max = 4;
C++ Random for double:( http://www.cyberforum.ru/cpp-beginners/thread952132.html
Задание: Создать функцию random(a, b), которая возвращает случайное вещественное число от вещественного числа a включительно до вещественного числа b не включительно. И что такое static_cast<double>? Похожие задания: #include <iostream> #include <cstdlib> // для использования генератора случайных чисел #include <ctime> // функции времени для инициализации генератора с. ч. using...
C++ Написать программу, которая решает уравнение с одним неизвестным и выводит в консоль значение неизвестного. Уравнение посимвольно вводится с клавиатур Заупутался :-( подробнее

Показать сообщение отдельно
DanShady
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 18
11.09.2013, 22:29  [ТС]
alsav22, Спасибо за программу, работает прекрасно. Единственное когда все разобрал понял что в данном случае замену элементов списка можно упростить. ПОлучилось вот так
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
#include <iostream>
#include <time.h>
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
struct list             // определение структурного типа list
{   int dat;            // данные
    struct list *next;  // указатель на следующий эл-т списка
};
 
typedef list *P_list;   // определение указателя на тип list
 
void show(P_list head); // вывод списка
void find_max_min(P_list head, P_list &pmax, P_list &pmin); // поиск в списке элементов с max и min
void swap(int &a, int &b); // замена значений в элементах с max и min
void delete_list(P_list &head); // удаление списка
 
int main()
{   
    int N, i;        // N-количество элементов в списке
 
    P_list pb;      // указатель на начало списка
    P_list pt;      // указатель на текущий элемент списка
 
    time_t t;
    srand (time(&t));   // инициировать датчик случ. чисел
    cout << " N = ";  // ввести размер списка (с клавиатуры)
    cin >> N;
    if (N==0) exit(1); //если размер списка 0 то программа закрывается
    //_____________________ Создание списка
    // создать первый элемент
    pb = new list;       // выделить память
    pb ->dat = rand()%100;   // записать данные
    pt = pb;      // установить текущий указатель на начало
    for (i = 1; i < N; i++)   // в цикле создать список
    {
        pt ->next = new list;     // очередной элемент (выделить память)
        pt = pt ->next;           //текущий указатель-на вновь созданный элемент
        pt ->dat = rand() % 100;  // записать данные 
    }                            // создание списка завершено
    pt ->next = NULL;            // записать признак конца списка
    //_______________________ печать списка в 10 колонок
    
    show(pb); //функции шоу передать указатель на первый элемент списка
 
    P_list pmax = NULL; //создание переменных в стуктуре
    P_list pmin = NULL;
        
    find_max_min(pb, pmax, pmin);
    swap(pmax->dat, pmin->dat); //функция меняет элементы местами
 
    show(pb);
 
    delete_list(pb); //отчистить список
    system("PAUSE");
    return 0;
}
 
void show(P_list head)
{
    P_list pt;
    int i;
    cout << endl;
    for (pt = head, i = 1; pt != NULL ;i++)  //цикл будет длиться от первого элемента до посл. пока не появиться NULL 
    {
        cout << pt->dat; // печать информационного поля списка
        pt = pt ->next;      //перемещение указателя на следующий элемент
        if (i % 10 == 0) cout << endl;       // форматирование (в 10 колонок)
        else cout << "\t";
    }
}
 
void find_max_min(P_list head, P_list &pmax, P_list &pmin)
{
    pmax = pmin = head;
    int max, min;
    max = min = head ->dat;
    
    for (list *p = head ->next; p!=NULL; p = p ->next) //создаем указатель п , который указывает на 2 эл списка
    {
        if (p ->dat > max)
        {
             max = p ->dat;
             pmax = p; //указатель на промежуточное максимальное значение
        }
        if (p->dat < min)
        {
             min = p ->dat;
             pmin = p;
        }
    }
    
}
 
void swap(int &a, int &b)
{
    int tmp  = a;
    a = b;
    b = tmp;
}
 
void delete_list(P_list &head)
{
    P_list temp;
    while (head)
    {
        temp = head ->next;
        delete head;
        head = temp;
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru