Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2014, 12:51   #1
PHEDOR
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 3
Вопрос Создать стек, найти min среди положительных, max среди отрицательных и поменять их местами (на C/C++) (ответ нужен сегодня)

задача такая: создать стек, найти min среди положительных, max среди отрицательных и поменять их местами

у меня есть программа, но она просто находит мин и макс и все:

Код:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
struct elem {int k; elem*next;};

elem*push(elem*b, int m)[/B][/B]
{elem *t=new elem;
t->k=m;
t->next=b;
b=t;
return b;}


int max(elem*b)
{elem *p; int max=b->k;
for (p=b->next;p;p=p->next)
if (p->k>max) max=p->k;
return max;}

int min(elem*b)
{elem *p; int min=b->k;
for (p=b->next;p;p=p->next)
if (p->k<min) min=p->k;
return min;}



elem *del(elem*b,int k)
{elem*f,*p,*q;
f=new elem;
f->next=b;
for (p=f;p->next && p->next->k!=k;p=p->next);
if (p->next==NULL) 
{delete f;
return b;}
q=p->next;
delete q; b=f->next; delete f;
return b;
}


void printf(elem*b)
{elem *p; puts (" ");
for (p=b;p;p=p->next)
printf ("%d ",p->k);}


int _tmain(int argc, _TCHAR* argv[])
{int m,i,n,Ma,Mi,DEL,k,PR,Mi1,Ma1 ;
elem*b=NULL;
for (i=0;i<5;i++)
{scanf("%d",&m);
b=push(b,m);}
puts ("max");
Ma=max(b);

printf ("%d ", Ma);
Ma1=Ma+9;
printf ("%d ", Ma1);
puts ("\nmin");
Mi=min(b);

printf ("%d ", Mi);
Mi1=Mi+21;
printf ("%d ", Mi1);
//b=del(b,k);

printf(b);
getch();
return 0;
}

ПОМОГИТЕ, ПРОШУ
УМОЛЯЮ ПОМОГИТЕ!!!! ответ нужен уже СЕГОДНЯ!



________
1) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)

2) Название темы не соответствует правилам форума
Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.06.2014 в 13:21.
PHEDOR вне форума Ответить с цитированием
Старый 04.06.2014, 13:02   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Код:
int max(elem*b)
{elem *p; int max=b->k;
for (p=b->next;p;p=p->next)
if (p->k>max) max=p->k;
return max;}

int min(elem*b)
{elem *p; int min=b->k;
for (p=b->next;p;p=p->next)
if (p->k<min) min=p->k;
return min;}
Ну так добавьте тут проверки:
в мин - if(p->k>0)
в макс - if(p->k<0)

И называйте переменные адекватно. Никому не хочется ломать глаза об эту чепуху:
Код:
int m,i,n,Ma,Mi,DEL,k,PR,Mi1,Ma1
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.06.2014, 13:09   #3
PHEDOR
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 3
По умолчанию

не понимаю, как добавить проверку, напишите мне пожалуйста, я не понимаю в этом ничего(
PHEDOR вне форума Ответить с цитированием
Старый 04.06.2014, 13:14   #4
PHEDOR
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 3
По умолчанию

не понимаю, как добавить эту проверку, помогите
PHEDOR вне форума Ответить с цитированием
Старый 04.06.2014, 16:18   #5
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Вместо if (p->k>max) max=p->k; написать if ( p->k<0 && p->k>max) max=p->k;
Вместо if (p->k<min) min=p->k; написать if (p->k<0 && p->k<min) min=p->k;
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы. Поменять местами все min и max (даже если будет 4 -min и 1-max). Виталик124 Паскаль, Turbo Pascal, PascalABC.NET 6 19.02.2014 22:44
Матрица. Найти минимальный среди положительных, находящихся над главной диагональю, и поменять его с максимальным среди отрицатель Mayers Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2012 22:25
Найти max,min среди нечетных Korvax Помощь студентам 1 24.04.2012 15:26
массиве X(N) найти максимальный элемент среди положительных элементов массива и минимальный среди отрицательных элементов. sorok Общие вопросы C/C++ 2 20.03.2012 12:18
Паскаль. найти цифры среди букв и поменять местами. grom333 Паскаль, Turbo Pascal, PascalABC.NET 3 14.01.2011 22:32