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

Отсортировать ноутбуки по объему RAM - C++

Восстановить пароль Регистрация
 
_arty_
29 / 28 / 1
Регистрация: 10.07.2009
Сообщений: 316
27.01.2011, 11:34     Отсортировать ноутбуки по объему RAM #1
В элементе списка содержатся данные о ноутбуке:
*наименование;
*цена;
*тактовая частота процессора;
*размер ОП.
Создать второй список, в котором все элементы упорядочены по возрастанию размера ОП.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2011, 11:34     Отсортировать ноутбуки по объему RAM
Посмотрите здесь:

Удаление антивируса из RAM C++
C++ Почему программа в Windows может использовать лишь 1792 мегабайта RAM?
C++ RAM, чтение и запись в RAM, Pointer ы
C++ Сортировка по объему
C++ Фрагментация RAM
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
27.01.2011, 13:03     Отсортировать ноутбуки по объему RAM #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
using namespace std;
 
struct notebook{
    string name;
    float price;
    float processor;
    float memory;
    bool operator>(notebook a){
        return memory>a.memory;
    }
    friend ostream& operator<<(ostream& o, notebook& a){
        cout<<a.name<<"\n"<<a.price<<"\n"<<a.processor<<"\n"<<a.memory<<"\n";
    }
};
 
template<class T>
struct node{
    T data;
    node* next;
    node():next(0){}
    node(T a):data(a), next(0){}
    node<T>* insert(T);
    void show();
    void del();
};
 
template<class T>
node<T>* node<T>::insert(T a){
    if(a>data&&next!=0){
        next=next->insert(a);
        return this;
    }
    else if(a>data&&next==0){
        node<T>* temp=new node<T>(a);
        next=temp;
        return this;
    }
    else{
        node<T>* temp=new node<T>(a);
        temp->next=this;
        return temp;
    }
}
 
template<class T>
void node<T>::show(){
    cout<<data<<"\n";
    if(next!=0) next->show();
    else cout<<"\n\n";
}
 
template<class T>
void node<T>::del(){
    if(next!=0){
        next->del();
        delete next;
        next=0;
    }
}
 
template<class T>
struct list{
    node<T>* head;
    list():head(0){}
    list(list&);
    void insert(T);
    void show();
    void del();
};
 
template<class T>
list<T>::list(list<T>& a):head(0){
        node<T>* temp=a.head;
        while(temp!=0){
            insert(temp->data);
            temp=temp->next;
        }
}
 
template<class T>
void list<T>::insert(T a){
    if(head==0) head=new node<T>(a);
    else head=head->insert(a);
}
 
template<class T>
void list<T>::show(){
    if(head!=0) head->show();
}
 
template<class T>
void list<T>::del(){
    if(head!=0){
        head->del();
        delete head;
        head=0;
    }
}
 
int main(){
    list<notebook> l;
    int q;
    cout<<"Vvedite chislo noutbukov\n";
    cin>>q;
    notebook a;
    for(int i=0; i<q; i++){
        cout<<"\nname= ";
        cin>>a.name;
        cout<<"price= ";
        cin>>a.price;
        cout<<"processor= ";
        cin>>a.processor;
        cout<<"memory= ";
        cin>>a.memory;
        l.insert(a);
    }
    cout<<"\n\nVtoroi spisok: \n";
    list<notebook> l1=l;
    l1.show();
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.01.2011, 13:14     Отсортировать ноутбуки по объему RAM #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пусть у тебя есть структура, хранящая инфу о ноутбуке:
C
1
2
3
4
5
6
7
8
9
#define MAX_LAPTOP_NAME 32
 
struct laptop
{
    char name[MAX_LAPTOP_NAME];
    size_t price;
    size_t cRate;
    size_t RAM;
};
и два списка ls1 и ls2. Копируешь первый список во второй, и сортируешь второй список примерно так:
C
1
2
3
4
5
6
7
8
9
10
int cmp(const struct laptop* l1, const struct laptop* l2)
{
    if(l1->RAM < l2->RAM)
    return -1;
    if(l2->RAM < l1->RAM)
    return 1;
    return 0;
}
...
qsort(l2, NUMBER_OF_LAPTOPS, sizeof(struct laptop), (int (*) (const void*, const void*)) cmp);
Где NUMBER_OF_LAPTOPS - число элементов в списке
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2011, 06:10     Отсортировать ноутбуки по объему RAM #4
Название не соответствует содержанию.
Yandex
Объявления
28.01.2011, 06:10     Отсортировать ноутбуки по объему RAM
Ответ Создать тему
Опции темы

Текущее время: 16:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru