Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод текста на русском https://www.cyberforum.ru/ cpp-beginners/ thread621908.html
// Выводит текст стихотворения #include <stdio.h> #include <conio.h> void main () { printf("Ynulaua pora! ochey ochsrovan'e!\n"); printf("Priyatna mne tvoya proschal'naya krasa -\n"); ...
C++ Наследование ostream
Я наследовал от ostream класс, перегрузил operator<<(const char *) для одного типа данных, и создал объект newcout, однако он почему-то не может выводить int. Почему?
C++ Как вывести в фаил rdbuff() ?
// po;jkyhgfd.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // asdvcx.cpp: главный файл проекта. #include <iostream> #include <boost/asio.hpp> #include...
C++ Классы. Implement the two functions of the class. Ребята, суть такая вообщем, я проходил когда-то C++, но классы я не затрагивал, помогите с заданием, мне лишь бы разоьраться в этом было бы неплохо. C++ Template: class MyClass { public:... https://www.cyberforum.ru/ cpp-beginners/ thread621888.html
C++ Ссылка на структуру https://www.cyberforum.ru/ cpp-beginners/ thread621867.html
Рассматривал пример из книги Праты. Раздел про ссылки на структуры. В книжке был приведён пример, код примера можно увидеть ниже. У меня возник вопрос для чего нужен этот значек в прототипе и...
Определить средний балл по университету C++
ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! 2.тема : ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ...
C++ Вывести на экран таблицу значений функции y(x)
ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! вот задания сами. 3.тема :ПРОГРАММИРОВАНИЕ С...
C++ Файлы и массивы структур: поиск, сортировка ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! вот задания сами. 4.тема ПРОГРАММИРОВАНИЕ С... https://www.cyberforum.ru/ cpp-beginners/ thread621847.html
C++ Массив: Что быстрее: mass[n] или *(mass+n)? https://www.cyberforum.ru/ cpp-beginners/ thread621840.html
Что быстрее: mass или *(mass+n) и стоит ли заморачиваться по этому поводу?
C++ Найти слова, содержащие букву “s” ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! 1.тема: ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ... https://www.cyberforum.ru/ cpp-beginners/ thread621832.html
0 / 0 / 0
Регистрация: 09.07.2012
Сообщений: 7
0

Стек в два стека

10.07.2012, 17:16. Просмотров 2258. Ответов 4
Метки (Все метки)

Здравствуйте!!
Нужно создать стек в диапазоне -50 до 50.Преобразовать стек в два стека.Причем, первый должен содержать только чётные числа,второй - только нечётные.
Ни разу не работала со стеками,помогите пожалуйста разобраться.

Добавлено через 1 минуту
Цитата Сообщение от Igor92 Посмотреть сообщение
Здравствуйте!!
Нужно создать стек в диапазоне -50 до 50.Преобразовать стек в два стека.Причем, первый должен содержать только чётные числа,второй - только нечётные.
Ни разу не работала со стеками,помогите пожалуйста разобраться.
Вот код для того же условия только сдесь выводится положительные и отрицательные:
Что тут нада поменять чтобы выводило чётные и нечётные)))))
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* Макрос возвращает случайное число х такое, что l <= x <= h */
#define bounded_random(l, h) ( rand() % ((h) - (l) + 1) + (l) )

/* Структура, состаящая из целого значения и указателя на такую же структуру */
typedef struct NODE {
int value;
struct NODE * next;
} node_t;

/* Функция добавляет значение в начало списка
pStack - указатель на указатель на начало списка
nValue - добавляемое значение
возвращает 0 при удачном завершении, -1 при ошибке выделения памяти
*/
int push(node_t ** pStack, const int nValue) {
node_t * pNode = malloc(sizeof(node_t));
if ( ! pNode )
return -1;

pNode->value = nValue;
pNode->next = *pStack;
*pStack = pNode;

return 0;
}

/* Функция присваивает переменной, на которую указывает pValue
значение первого элемента списка и удаляет этот элемент
возвращает 0 при удачном завершении, -1 если список пуст
*/
int pop(node_t ** pStack, int * pValue) {
if ( ! *pStack )
return -1;
else {
node_t * pNode = (*pStack)->next;
*pValue = (*pStack)->value;
free(*pStack);
*pStack = pNode;
}

return 0;
}

/* Нижняя и верхняя границы диапазона случайных чисел */
#define LOW (-50)
#define HIGH (50)

int main(void) {
size_t count;

srand(time(NULL));

/* В цикле запрашивает количество элементов, выход - ввод символа, отличного от цифры или 0 */
while ( printf("Number of elements: ") && scanf("%u", &count) == 1 && count ) {
/* all - указатель на стек для всех чисел, pos - позитивных, neg - негативных */
node_t * all, * pos, * neg;
int curr;

all = pos = neg = NULL;
/* Запись в общий стек заданного количества элементов */
while ( count-- ) {
if ( push(&all, bounded_random(LOW, HIGH)) ) {
fprintf(stderr, "Memory error!\n");
exit(1);
}
}

printf("All:\n");
/* Пока из общего стека удаётся получить значение, вывод значения на экран
и размещение в один из стеков pos/neg в зависимости от того, позитивное оно,
или негативное */
while ( ! pop(&all, &curr) ) {
printf("%d ", curr);
if ( curr < 0 ) {
if ( push(&neg, curr) ) {
fprintf(stderr, "Memory error!\n");
exit(1);
}
}
else {
if ( push(&pos, curr) ) {
fprintf(stderr, "Memory error!\n");
exit(1);
}
}
}

/* вывод значений по очереди из стеков pos и neg */
printf("\nPositive:\n");
while ( ! pop(&pos, &curr) )
printf("%d ", curr);

printf("\nNegative:\n");
while ( ! pop(&neg, &curr) )
printf("%d ", curr);

printf("\n");
/* Память из-под стеков освобождать не приходится - это уже функция pop в цикле сделала */
}

exit(0);
}

Вернуться к обсуждению:
Стек в два стека
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2012, 17:16
Готовые ответы и решения:

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...)
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то...

Разделить стек на два стека
Подскажите, пожалуйста, как убрать лишние значения при выводе уже полученных стеков в divide...

Преобразовать стек в два стека
Преобразовать стек в два стека. В первый поместить все четные, а во второй – все нечетные числа.

Заполнить стек 20 случайными числами с интервала [0; -10]. Вывести стек на экран. Изъять из стека каждый четвертый элеме
Заполнить стек 20 случайными числами с интервала . Вывести стек на экран. Изъять из стека каждый...

4
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.