Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kyzavr
2 / 2 / 0
Регистрация: 22.05.2013
Сообщений: 136
#1

Очередь на основе массива - C++

26.05.2013, 23:41. Просмотров 350. Ответов 0
Метки нет (Все метки)

Есть код) помогите переделать его под очередь на основе массива =)
еще кто знает как перенести функцию вывода print() в дружественную функцию класса так как сказали мне что тип нельзя сделать как метод класса вывод очереди
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <stdlib.h>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <locale.h>
#include <windows.h>
const int NotUsed = system("color F0");
using namespace std;
struct tovar
{ 
 int koll;
 double prise;
 tovar* next;
};
 
class cklad
{
public:
      tovar* begin;
      int bkoll;
      double bprise;
 
cklad(){begin=NULL;}
~cklad(){while(begin)take();}
void add()
      {
        tovar* temp= new tovar,*temp1=begin;
        cout<<"Ââåäèòå êîëè÷åñòâî òîâГ*Г°Г*"<<endl;  
        cin>>temp->koll; 
        cout<<"Ââåäèòå öåГ*Гі òîâГ*Г°Г* "<<endl;
        cin>>temp->prise; 
        temp->next=NULL;
        if(begin)
        {
          while(temp1->next)temp1=temp1->next;
          temp1->next=temp;
        }
        else begin=temp;
      }
void print()
      {
       tovar* temp=begin;
       if(begin)
       {
        cout<<" Êîëè÷åñòâî òîâГ*Г°Г* = "<<temp->koll<<" ГЏГ® öåГ*ГҐ = "<<temp->prise<<endl;
        temp=temp->next;
        while(temp)
        {
          cout<<" Êîëè÷åñòâî òîâГ*Г°Г* = "<<temp->koll<<" ГЏГ® öåГ*ГҐ = "<<temp->prise<<endl;
          temp=temp->next;
        }
        cout<<endl;
       }
       else cout<<"                      ";cout<< "ÑêëГ*Г¤ ГЇГіГ±ГІ"<<endl;  
      }
tovar take()
      {
      
       if(begin)
         {
           tovar* temp,temp1;
           temp=begin;
           temp1=*temp;
           free(temp);
           begin=begin->next;
           
           return temp1;
         }
       else cout<<"                     ";cout<<"ÑêëГ*Г¤ ГЇГіГ±ГІ"<<endl;
       tovar temp1;
       temp1.koll=0;
       return temp1;
      }
 
   
};
void SetColor(int text, int background)
{
        HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
int main()
{
    HWND hwnd;       
    char Title[1024];
    GetConsoleTitle(Title, 1024); // ÓçГ*Г*ГҐГ¬ èìÿ îêГ*Г*
    hwnd=FindWindow(NULL, Title); // ÓçГ*Г*ГҐГ¬ hwnd îêГ*Г*
    MoveWindow(hwnd,300,100,1000,800,TRUE);//xnew,ynew,wnew,hnew -Г*îâûå ïîëîæåГ*ГЁГҐ x,y, øèðèГ*Г* ГЁ âûñîòГ*
setlocale(LC_ALL,"RUS");
int i,fl=1,koll,kolll;
double summ;
cklad cklad1;
struct tovar btovar;
btovar.koll=0;btovar.prise=0;
tovar temp;
while(fl)
 {
    
    cout<<"\n                       ";SetColor(0,7);cout<<" Г€Г*òåðôåéñ "<<endl;SetColor(0,15);
    cout<<"                    ";cout<<"1 äîáГ*ГўГЁГІГј òîâГ*Г°"<<endl;
    cout<<"                    ";cout<<"2 ÏðîäГ*ГІГј òîâГ*Г°"<<endl;
    cout<<"                    ";cout<<"3 Âûâåñòè ñîñòîÿГ*ГЁГҐ Г±ГЄГ«Г*Г¤Г*"<<endl;
    cout<<"                    ";cout<<"0 âûõîä"<<endl;
    cin>>i;
    system("cls");
    if(i==0){fl--;}
    if(i==1){cklad1.add();}
    if(i==2)
    {   summ=0;
        SetColor(0,7);printf("\n Ñêîëüêî ïðîäГ*ГІГј òîâГ*Г°Г*: ");SetColor(0,15);
        scanf("%d",&koll);
        while (koll!=0)
        {
          if(btovar.koll==0)btovar=cklad1.take();
          if(btovar.koll==0){SetColor(3,15);printf("Ãðóñòü ГЇГҐГ·Г*ëü Г*åõâГ*ГІГ*ГҐГІ %d òîâГ*Г°Г*",koll);SetColor(0,15);koll=0;}
          else
          if(btovar.koll>=koll&&koll)
          {
          printf("\n ГЊГ» ïðîäГ*ГҐГ¬ %d òîâГ*Г°Г* ГЇГ® öåГ*ГҐ %lf $ Г*Г* ñóììó=%lf $ \n",koll,btovar.prise,koll*btovar.prise);
          summ+=koll*btovar.prise;
          btovar.koll-=koll;
          koll=0;
            }
            else
            {
            koll-=btovar.koll;
            kolll=btovar.koll;btovar.koll=0;
            printf("\n ГЊГ» ïðîäГ*ГҐГ¬ %d òîâГ*Г°Г* ГЇГ® öåГ*ГҐ %lf $ Г*Г* ñóììó=%lf $ \n",kolll,btovar.prise,kolll*btovar.prise);            
            summ+=kolll*btovar.prise;
            }
           
      }
      SetColor(0,7);printf("\n ГЌГ*  Г®ГЎГ№ГѕГѕ ñóììó=%lf $\n",summ);SetColor(0,15);
    }
 
    if(i==3)
    {
    cout<<" >Гў ðåçåðâå< Êîëè÷åñòâî òîâГ*Г°Г* = "<<btovar.koll<<" ГЏГ® öåГ*ГҐ = "<<btovar.prise<<endl;
    cklad1.print();
    }
 
      
       
 }
    return 0;
}

Добавлено через 4 часа 26 минут
серьезно не кто не знает как эту байду сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 23:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Очередь на основе массива (C++):

Очередь на основе массива - C++
когда создаю пустую очередь размерностью 2 в main() вот так BoundQueue &lt;int&gt; a(2); выводится ошибка:main.cpp(13) : error C2259:...

Очередь на основе массива - C++
Очередью (англ. queue) называется хранилище данных, в котором можно работать только с одним элементом: тем, который был добавлен в стек...

Очередь на основе массива - C++
Сделал программу, которая создает очередь с помощью массива. Но работает она криво.Например, если ввести длину очереди 3 элемента, написать...

Очередь с приоритетом на основе массива - C++
Как можно организовать очередь с приоритетом на основе массива ? Возможно можно исп динамический двумерный массив , но как его потом...

Очередь на основе статического массива - C++
в очередь с экрана вводятся строки,когда вводится строка end,элементы извлекаются из очереди и записываются в файл. xD.h #include...

Очередь на основе динамического массива - C++
Помогите найти ошибку, по заданию надо записать в очередь данные из файла, а при записи отрицательного числа программа должна извлечь все...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 23:41
Привет! Вот еще темы с ответами:

Очередь на основе динамического (статического) массива - C++
Задание следующее: Абстрактный класс (интерфейс) - это у меня очередь Дочерние/производные классы (драйверы) - 1)Очередь на основе...

Очередь на основе массива: объяснить что происходит в заданном фрагменте кода - C++
всем привет. начал разбираться с очередью на с++ и наткнулся на пример. вот фрагмент кода void init(QUEUE *pq) { pq-&gt;first=0; ...

Очередь на основе динамического массива. Изучение функций ввода/вывода в программном интерфейсе Win32 - C++
изучение функций ввода/вывода в программном интерфейсе Win32. Интерфейс модуля для работы с заданной структурой данных из задания №4...

"Очередь" на основе динамического массива - C++
Как можно переделать чтобы не было ошибки &quot;Предел памяти&quot;? Задача: реализация &quot;очередь&quot; на основе динамического массива. #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru