Вывести на экран сумму всех положительных чисел очереди и ее размер - C (СИ)
Формулировка задачи:
помогите доделать задачу
задание:
Создайте очередь для целых чисел. Создайте функции push, pop и size для ввода и вывода элементов очереди и определения ее размера. Вводите в очередь числа. После ввода числа 0 выведите на экран сумму всех положительных чисел очереди и ее размер
вот текст моей проги что немогу никак сумму подсчитать.
помогите плиз!
#include <stdio.h> #include <conio.h> #include <iostream.h> struct point { int item; point *next; } *head, *last; void Add(void); void Delete(void); void Print(void); void re(void); void size(void); void main() { char a; bool flag=true; while(flag) { cout<<"0 - exit"<<endl; cout<<"1 - re"<<endl; cout<<"2 - add"<<endl; cout<<"3 - del"<<endl; cout<<"4 - print"<<endl; cout<<"5 - size"<<endl; a = getch(); switch(a) { case '0': flag=false; break; case '1': re();break; case '2': Add(); break; case '3': Delete(); break; case '4': Print(); break; case '5': size(); break; default: cout<<"error\n\n"; } }; }; void re() { int par; point *tmp; cout<<"Enter element:"; cin>>par; tmp = new point(); tmp->next = NULL; tmp->item = par; head = tmp; last = head; while(par!=0) { cin>>par; tmp = new point(); last->next = tmp; tmp->next = NULL; tmp->item = par; last = tmp; } } void Add(void) { int par; point *tmp; cout<<"Enter element:"; cin>>par; tmp = new point(); tmp->item = par; tmp->next = NULL; if (head == NULL) { head = tmp; last = head; } else { last->next = tmp; last = tmp; } cout<<"element: "<<par<<"add\n"; }; void Delete() { if (head == NULL) { cout<<"error!"; } else { point *tmp; int tint; tmp = head; head = head->next; tint = tmp->item; delete tmp; cout<<"element: "<<tint<<"del!\n"; } }; void Print() { point *tmp; tmp = head; cout<<"elements: "; while (tmp!=NULL) { cout<<tmp->item; tmp=tmp->next; } cout<<"\n"; } void size() { int sum=0; point *tmp; tmp=head; if(tmp->item>0) sum+=tmp->item; cout<<(sum)<<endl; tmp=tmp->next; };
Решение задачи: «Вывести на экран сумму всех положительных чисел очереди и ее размер»
textual
Листинг программы
#include <iostream.h> #include <stdlib.h> //размер очереди глобальная переменная long size(0); //Описание узла очереди struct Node { int d; //данные узла Node *next; //указатель на следующий узел }; Node *Create(int d); //создание очереди void push(Node**pend,int d); //доюавление в конец очереди int pop(Node **pbeg); //выборка из начала очереди. inline long getSize(){return size;} //показ размера очереди //показ очереди на экран inline void print(Node *const pbeg){ Node *t = pbeg; while(t){ cout<<t->d<<' '; t=t->next; } } //получение суммы элементов очереди inline int getSum(Node *const pbeg){ Node *t = pbeg; int sum(0); while(t){ if(t->d>=0)sum+=t->d; t=t->next; } return sum; } int main(){ Node *pbeg = NULL; Node *pend = NULL; //Формируем начало очереди pbeg = Create(20); pend = pbeg; //------------------------ //звполняем элементами cout<<"Input number\n"; int i=10; int num(0); while(i){ cin>>num; if(num==0){ cout<<"SIZE\t"<<getSize(); cout<<'\n'; cout<<"SUMM_ELEM >=0\t"<<getSum(pbeg); } push(&pend,num); i--; } print(pbeg); //показ очереди на экран cout<<'\n'; //Делем полную выборку: while(pbeg)pop(&pbeg); return 0; } //создание очереди Node *Create(int d){ Node *pv = new Node; pv->d=d; pv->next = NULL; size++; return pv; } //доюавление в конец очереди void push(Node**pend,int d){ if(*pend==NULL)return; Node *pv = new Node; pv->d =d; pv->next = NULL; (*pend)->next = pv; (*pend)=pv; size++; } //выборка из начала очереди. int pop(Node **pbeg){ Node *tmp = (*pbeg); if(tmp){ int d = tmp->d; (*pbeg)=(*pbeg)->next; delete tmp; return d; size--; } return -1; }
Объяснение кода листинга программы
- Объединение двух строк с помощью оператора '+' выполняется в строке 63.
- В функции main() объявлены две переменные i и num.
- Функция pop() удаляет узел из начала очереди и возвращает его значение.
- В функции Create() создается новый узел с заданным значением и добавляется в конец очереди.
- В функции push() добавляется новый узел в конец очереди.
- Функция print() выводит все элементы очереди на экран.
- Функция getSum() возвращает сумму всех положительных чисел в очереди.
- В функции main() после завершения работы программы выполняется полная выборка очереди с помощью функции pop().
- В функции main() после каждой операции с очередью выводится размер очереди и сумма положительных чисел.
- При завершении программы выводится сообщение об ошибке, если в очереди остались элементы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д