Skip to content

Instantly share code, notes, and snippets.

@skhozinova
Last active May 22, 2017 16:59
Show Gist options
  • Select an option

  • Save skhozinova/91952992ef977076fcd17f85d1f3bd82 to your computer and use it in GitHub Desktop.

Select an option

Save skhozinova/91952992ef977076fcd17f85d1f3bd82 to your computer and use it in GitHub Desktop.
-1
2
-3
4
5
-10
#include<stdio.h>
#include<conio.h>
// Создать список из целых чисел. Подсчитать сумму положительных элементов. Создать из них новый список.
struct stack //описание стека stack
{
int inf; stack *next;
};
stack *init_stack() //инициализация стека
{
return NULL;
}
void push(stack *&s,int item) //добавление элемента в стек. Передача по ссылке
//Значение аргумента меняется
{
stack *r;
r=new stack;
r->inf=item;
r->next=s;
s=r;
}
int pop(stack *&s) //выбор верхнего элемента из стека
{
stack *r=s;
int x=r->inf;
s=r->next;
delete r;
return x;
}
int peek(stack *s) //просмотр верхнего элемента стека
{
return s->inf;
}
int empty_stack(stack *s) //определение пустоты стека
{
return(s)?0:1;
}
int main(void)
{
FILE *h=fopen("in.txt","r");
FILE *g=fopen("output.txt","w");
int x;
int sum=0;
stack *head=init_stack(); //инициализация стека
while (!feof(h)) //пока не достигнут конец файла h
{
fscanf(h,"%d",&x); //читаем целое число из файла в переменную i
push(head,x); //записываем значение i в стек
}
while (!empty_stack(head)) //пока стек не пуст
{
x=pop(head); //извлекаем верхний элемент из стека
if(x>0)
{
sum+=x;
fprintf(g,"%d",x);//записываем его в файл g
}
}
fcloseall(); //завершаем работу с файлами
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment