Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  ке
Language: C/C++
Code:
#include <fstream>          // необходимые заголовочные файлы
#include <cstdlib>
//#include <iostream>

using namespace std;

struct stack{                    // обычная структура стека
     int ch;
     stack *next;
};

void push(stack* &st, int ch){     // процедура вставки
     stack *node = new stack;
     node->ch = ch;
     node->next = st;
     st = node;
}

int pop(stack* &st){               // процедура извлечения
     int Res = st->ch;
     stack *temp = st;
     st=st->next;
     delete temp;
     return Res;
}

int sum_k(stack* &st, int k){     // процедура суммы к-последних элементов 
          stack *temp = st;          // временная переменная для хождения по стеку
          int Res = 0;               // нулевой результат
          for(int i = 0; i < k; i++) { // проходим к элементов
               Res += temp->ch;          // добавляем очередной элемент к результату
               temp = temp->next;          // переходим к следующему
          }
          return Res;                    // возвращаем результат и выходим из процедуры
}

int main(){
     ifstream infile;
     ofstream outfile;
     infile.open("hemoglobin.in", ios::in);          // открытие входного
     outfile.open("hemoglobin.out", ios::out);     // и выходного файлов
     stack *st;                              // стек
     char string[10];                    // строка для чтения файла
     if(!infile) return 1;               // если файл не открыт = выход
     while(infile>>string){               // читаем строки пока не достигнут конец файла
          // если команда плюс - то добавляем элемент в стек
          if(string[0] == '+') push(st, atoi(&string[1])); 
          if(string[0] == '-') {     // если команда минус - извлекаем из стека
               outfile<<pop(st)<<endl;
          }
          if(string[0] == '?'){     // если команда вопрос - считаем сумму и выводи в файл
               outfile<<sum_k(st, atoi(&string[1]))<<endl;
          }
     }
     return 0;
}
          
Comments: