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

Динамические Списки!!!! Очень нужно...! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан массив из 9 целых чисел. Найти сумму элементов массива и, если она четная, вывести сообщение "Сумма четная", в противном случае напечатать "Сумма http://www.cyberforum.ru/cpp-beginners/thread150938.html
Дан массив из 9 целых чисел. Найти сумму элементов массива и, если она четная, вывести сообщение "Сумма четная", в противном случае напечатать "Сумма нечетная". Операции с элементами массива осуществлять при помощи нотации индексов. спс заранее
C++ Числа-близнецы 1)Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые числа , разность между которыми равна двум. (Определить процедуру, позволяющую распознавать простые числа). 2)Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы (рис Е) Помогиет бедному... http://www.cyberforum.ru/cpp-beginners/thread150931.html
C++ Вопрос про чтение из файла
Дали в колледже курсовую на тему создания ежедневного, почасового расписания(запись дел в определенное время) для 5 бригад. Задание сделал там же в аудитории, на что преподаватель усложнил, мол все эти таблицы с данными должны записываться в .тхт файл, и считываться оттуда же при входе в программу, либо при вводе определенного значения\пункта меню в консоли. Запись сделал, а вот со считыванием...
Найти первые k C++
Найти первые k членов последовательности, если последовательность образована по закону:A1=x , An=...
C++ Отформатировать текст по правому краю http://www.cyberforum.ru/cpp-beginners/thread150923.html
Помогите с программой, не понимаю как это сделать: Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). Ширина колонки задается произвольно. Желательно на С
C++ Детектировать ошибку #include <iostream> #include <windows.h> #include <ddk\ntapi.h> #include <ddk\winddk.h> #include <ddk\ntddk.h> using namespace std; int main() { подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9384 / 5434 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
02.07.2010, 02:23     Динамические Списки!!!! Очень нужно...!
Nyto4ka, первая вот:
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <limits.h>
 
typedef struct NODE {
    long val;
    struct NODE * next;
} node_t;
 
node_t * new_node(long val, node_t * last){
    node_t * n;
    if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return NULL;
    n->val = val;
    n->next = NULL;
    if ( last )
        last->next = n;
    return n;
}
 
int insert_after(node_t * prev, long val){
    node_t * n;
    if ( ! prev )
        return -1;
    if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return -1;
    n->val = val;
    n->next = prev->next;
    prev->next = n;
    return 0;
}
 
/* возвращает указатель на структуру, после которой не получилось добавить элемент,
   или NULL если ошибок небыло */
node_t * add_abs(node_t * n){
    node_t * a;
    while ( n ){
        if ( n->val < 0 ){
            if ( insert_after(n, n->val * -1) )
                break;
        }
        n = n->next;
    }
    return n;
}
 
void print_nodes(const node_t * n, int width){
    while ( n ){
        printf("%*ld\n", width, n->val);
        n = n->next;
    }
}
 
void delete_nodes(node_t * n){
    node_t * t;
    while ( n ){
        t = n->next;
        free(n);
        n = t;
    }
}
 
/* возвращает 0 если в *pNum удалось поместить число,
   1 если ввод закончен, и -1 в случае ошибки */
int get_num(long * pNum){
    static char buf[BUFSIZ] = { 0 };
    char * tail;
    printf("Number: ");
    if ( ! fgets(buf, BUFSIZ, stdin) ){
        fprintf(stderr, "Can't get string.\n");
        return -1;
    }
    if ( *buf == '\n' )
        return 1;
    if ( ! isdigit(*buf) && *buf != '-' && ! isspace(*buf) ){
        fprintf(stderr, "Not a number.\n");
        return -1;
    }
    *pNum = strtol(buf, &tail, 10);
    if ( errno == ERANGE ){
        if ( *pNum == LONG_MAX )
            fprintf(stderr, "Too big.\n");
        else
            fprintf(stderr, "Too small.\n");
        errno = 0;
        return -1;
    }
    if ( ! isspace(*tail) ){
        fprintf(stderr, "Only digits allowed.\n");
        return -1;
    }
    return 0;
}
 
/* Описать функцию, которая за каждым отрицательным элементом очереди вставляет элемент,
    содержащий его значение по модулю. */
 
#define WIDTH 10
 
int main(void){
    node_t * first, * last;
    long val;
    int ret;
 
    first = last = NULL;
    printf("Enter some numbers. Empty string - finish.\n");
    while ( 1 ){
        if ( ! ( ret = get_num(&val) ) ){
            if ( ( last = new_node(val, last) ) == NULL ){
                fprintf(stderr, "Memory or another error.\n");
                if ( first )
                    delete_nodes(first);
                exit(EXIT_FAILURE);
            }
            if ( ! first )
                first = last;
        }
        else if ( ret == -1 )
            fprintf(stderr, "Wrong number! Try another one...\n");
        else
            break;
    }
 
    if ( ! first ){
        fprintf(stderr, "No values in list.\n");
        exit(EXIT_FAILURE);
    }
 
    printf("\nEntered values:\n");
    print_nodes(first, WIDTH);
 
    if ( last = add_abs(first) ){
        fprintf(stderr, "Can't add absolute value after %ld\n", last->val);
        delete_nodes(first);
        exit(EXIT_FAILURE);
    }
 
    printf("\nValues with added absolute if needed:\n");
    print_nodes(first, WIDTH);
 
    delete_nodes(first);
    exit(EXIT_SUCCESS);
}
проверяйте, если что - спрашивайте...
А вторую задачу просто не понял - каких элементов какого "дека"?
 
Текущее время: 21:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru