Вывести на экран сумму всех положительных чисел очереди и ее размер - 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;
}

Объяснение кода листинга программы

  1. Объединение двух строк с помощью оператора '+' выполняется в строке 63.
  2. В функции main() объявлены две переменные i и num.
  3. Функция pop() удаляет узел из начала очереди и возвращает его значение.
  4. В функции Create() создается новый узел с заданным значением и добавляется в конец очереди.
  5. В функции push() добавляется новый узел в конец очереди.
  6. Функция print() выводит все элементы очереди на экран.
  7. Функция getSum() возвращает сумму всех положительных чисел в очереди.
  8. В функции main() после завершения работы программы выполняется полная выборка очереди с помощью функции pop().
  9. В функции main() после каждой операции с очередью выводится размер очереди и сумма положительных чисел.
  10. При завершении программы выводится сообщение об ошибке, если в очереди остались элементы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы