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

Значения не вставляются в начало списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переделать программу http://www.cyberforum.ru/cpp-beginners/thread791882.html
Есть готовая программа, но нужно её переделать так, чтобы она была с функциями, прошу помощи и советов. #include<stdio.h> #include<conio.h> #include<math.h> #define n 5 #define m 5 int main() { float spA,spB,sp,sn,A,B,slA,slB; int i,j;
C++ Перевести пример на С++ (Вычислить значение выражения) Нужно перевести пример из изображения в код на C++ Конкретно задание: 1. Вычислить значение выражения, введя необходимые данные с клавиатуры и использовав вспомогательные переменные. Результат вывести на экран в указанном формате. http://www.cyberforum.ru/cpp-beginners/thread791870.html
Построить класс для работы с односвязным списком C++
При решении задач необходимо, без использования STL, описать класс, который используется для представления элементов а) массива с фиксированным количеством элементов; б) динамической структуры данных. Построить класс для работы с односвязным списком. Элементы списка – целые числа. Создать список List1. Построить список List2, содержащий порядковые номера максимальных элементов списка List1.
C++ Дано предложение. Найти два одинаковых слова
Дано предложение. В нем только два слова одинаковые. Найти эти слова.
C++ Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме одного. Найдите его за линейное время. http://www.cyberforum.ru/cpp-beginners/thread791804.html
сижу мучаюсь 30 минут, не как не могу составить алгоритм работы программы, подумывал нахождения через пары, но это очень долго.. вот задание: Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме одного. Найдите его за линейное время. Название темы должно отражать ее суть (хотя бы кратко о том, что внутри)
C++ Сгенерировать число "1" или "2" Как сделать с помощью функции rand генерацию числа в диапазоне от 0 до 1? Просто если пишу rand() % 1 то всё время выдаёт только одно и тоже число. Как мне известно малые биты менее случайны чем старшие. Как решить проблему? подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
21.02.2013, 22:42     Значения не вставляются в начало списка
легко). Вот пример с меню:
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
// Simple one_linked_list.
// "Простой" одноcвязный список.
 
#include <iostream>
#include <cstdlib>
 
// Для "отчистки std::cin".
#define CIN_HACK if (std::cin.peek() == '\n') std::cin.ignore()
 
struct Node
{
    std::string data; // Хранение данных (строка).
    Node* next; // Указатель на следующее звено.
};
 
Node *start = NULL;    // Это будет указатель на начало списка.
 
// Функция добавления узла.
void push()
{
    Node* info = NULL;
 
    // Если нет ни одного узла...
    if (!start) {
        info = new Node; // Выделяем память для первого узла.
        start = info; // Запаминаем начало.
        std::cout << "\nAdding new data: ";
        std::getline(std::cin, info->data); // Инициализируем данными.
        std::cout << '\n';
        info->next = NULL; // следующий элемент = NULL (признак линейного списка).
        return;
    }
 
    info = start; // Устанавливаем на начало.
    while (info->next) // Найдём конец.
        info = info->next;
    info->next = new Node; // Выделим память под новый узел.
 
    std::cout << "\nAdding new data: ";
    std::getline(std::cin, info->next->data); // Инициализируем данными.
    std::cout << '\n';
    info->next->next = NULL; // Следующий элемент = NULL (признак линейного списка).
}
 
// Функция отображает весь список.
void show()
{
    Node* info = start;
    
    std::cout << '\n';
    for (int i = 1; info; ++i) {
        std::cout << i << ") " << info->data << "\n";
        info = info->next;
    }
    std::cout << '\n';
}
 
// Функция освобождает память (уничтожает список).
void free_mem()
{
    Node* temp, *info;
 
    info = start;
    while (info) {
        temp = info; // Сохраняем указатель на текущий узел.
        info = info->next; // Перемещаемся на следующий объект.
        delete temp; // Удаляем текущий.
    } 
}
 
int main()
{
    for (char answer[10]; ; ) {
        std::cout << "1. Add node.\n";
        std::cout << "2. Show list.\n";
        std::cout << "3. Exit.\n : ";
        std::cin >> answer;
        CIN_HACK; // Игнорирует символ конца строки.
        switch (atoi(answer)) {
            case 1:
                push();
                break;
            case 2:
                show();
                break;
            case 3:
                free_mem(); // Освободить память перед выходом из программы.
                exit(0);
                break;
            default:
                std::cout << "\nWrong answer, try again.\n";
                break;
        }
    }
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru