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

Алгоритмы замещения страниц(STL, вторая попытка) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему for_each() не выводит кирилицу http://www.cyberforum.ru/cpp-beginners/thread453107.html
Вот такой код: #include <iostream> #include <string> #include <vector> #include <algorithm> void show(const std::string & s); int main() { using namespace std; setlocale(0, "");
C++ Перевод из одной системы счисления в другую. Мне задали сделать калькулятор для программиста на языке С. В нем требуется выполнение операций только целые числа, 4 арифметических действия, битовые операции | & ~ ^, перевод в 8,10,16,2 систему исчисления. Вопрос: Есть ли функции в С которые осуществляют перевод в 8,10,16,2 систему исчисления? Какие это функции, как их использовать. P.S. Если вы уже делали такой калькулятор, выложите... http://www.cyberforum.ru/cpp-beginners/thread453106.html
Числа - близнецы C++
В массиве простых чисел определить наличие чисел-близнецов (11-13; 7-5; 3-5)
C++ функция вывода системного времени
Всем привет! Необходимо написать функцию вывода текущего системного времени Вот слепил, а не работает: void InitTime(Time& time) { time_t rawtime; struct tm *timeinfo; time(&rawtime);
C++ Как лучше всего хранить коэффициенты? http://www.cyberforum.ru/cpp-beginners/thread453051.html
Мне нужно работать с матрицей порядка 100 000. Она сильно разреженная, по этому хранить все коэффициенты - не вижу смысла. Стало быть нужно хранить только не нулевые элементы матрицы. Но вот как это сделать лучше всего, чтобы было задействовано как можно меньше памяти? Элементы матрицы типа double
C++ Написать программу вычисления функции помогите пожалуйста подробнее

Показать сообщение отдельно
Visary_Master
 Аватар для Visary_Master
-154 / 16 / 4
Регистрация: 01.12.2010
Сообщений: 297
26.02.2012, 19:19     Алгоритмы замещения страниц(STL, вторая попытка)
Помогите пожалуйста найти ошибку в алгоритме, вроде все правильно работает, но иногда при разных входных данных возникает ошибка.
Так вот, решил реализовать алгоритм замещения страниц "Вторая попытка".
Коротко о задаче, имеется память ограниченного размера, в память на вход подаются страницы, алгоритм подобен FIFO, отличие в том, что если страница есть в памяти, то она переводится в конец очереди. У меня сделано так, что находится страница которая есть в памяти, и удаляется по ее позиции, а пришедшая страница добавляется в конец очереди(если они совпадают).

Код:
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
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <deque>
#include <algorithm>
#include <utility>
#include <cstdlib>
 
void show_fifo(const deque<int> &dq)
{
    deque<int>::const_iterator i;
    for (i=dq.begin(); i != dq.end(); ++i)
    {
        cout << *i << " ";
    }
     cout << endl;
}
int main()
{
    int mem_size = 5;
    int access_num;
    access_num = 13;
    int array[] = { 1, 2, 3, 4, 5, 2, 3, 4, 1, 5, 4, 1, 3};
 
    cout << "Vtoraya popbitka: " << endl;
    // Vtoraya popitka
    deque<int> dq;    
    
    for (int i=0; i<mem_size; i++)
    {
        dq.push_back(-1);
    }
    cout << "Memory: " << endl;
    show_fifo(dq);
 
    for (int i = 0; i < access_num; ++i)
    {
        cout << "Step " << (i+1) << ":" << endl;
        for (int j = 0; j < dq.size(); j++)
        {
                if ((find(dq.begin(), dq.end(), array[i]) != dq.end()) && (dq.size() != 0))
                {   
                    cout << "Page: " << array[i] << " has in memory" << endl;
                    int del = dq.at(array[i]);
                    dq.erase(dq.begin()+del);
                    dq.push_front(array[i]);
                    break;
                }
                else
                {
                    dq.push_front(array[i]);
                    dq.pop_back();
                    break;
                }
        }
        show_fifo(dq);
    }
Добавлено через 3 часа 57 минут
upppp!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru