Форум программистов, компьютерный форум CyberForum.ru

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

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

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

26.05.2013, 23:41. Просмотров 340. Ответов 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 минут
серьезно не кто не знает как эту байду сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 23:41     Очередь на основе массива
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Очередь на основе STL - C++
Народ, помогите пожалуйста! Я сейчас прохожу стеки, очереди и деки на основе STL. Плохо шарю во всех этих стеках, поэтому попросил у друга...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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