RE: Вопросы по C/C++ (Для новичков)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-14 23:01:59.326666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
int i=1 наверное написано. Мб '\n' –ты слеш не в ту сторону поставил?)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-14 23:30:31.556666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Не /n а \n —- Genco выше написал, просто я сразу не увидел =)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 11:18:38.070000
|
|
|
Fobes
Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
|
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include "math.h"
#include <vcl.h>
#pragma hdrstop
float cos(float,float,float,float);
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
float x1, y1;
float x2, y2;
float x3, y3;
float x, y;
cout <<endl<<"Enter x1 : ";
cin >> x1;
cout <<endl<<"Enter y1 : ";
cin >> y1;
cout <<endl<<"Enter x2 : ";
cin >> x2;
cout <<endl<<"Enter y2 : ";
cin >> y2;
cout <<endl<<"Enter x3 : ";
cin >> x3;
cout <<endl<<"Enter y3 : ";
cin >> y3;
x = cos(x1,x2,y1,y2);
cout <<x;
getch();
return 0;
}
float cos(float x1,float x2, float y1, float y2)
{
return (x1*x2+y1*y2)/(sqrt(sqr(x1)+sqr(y1))*(sqrt(sqr(x2)+sqr(y2)));
}
//---------------------------------------------------------------------------
ППс… сделал программку на половину и на тебе sqr - неопознанный символ, формула косинуса с координатами… Что я сделал не так ?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 11:56:43.503333
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
ну а что такое sqr?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 12:18:41.760000
|
|
|
Fobes
Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
|
как я понял из книги sqr- квадрат, а sqrt - кв. корень
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 13:21:56.116666
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
пользуй pow(число, степень)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 13:31:22.343333
|
|
|
Fobes
Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
|
АГА, пасибо !!!! продолжаю делать)))
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 14:37:12.256666
|
|
|
JetmanX
Сообщений: 17
Оценки: 0
Присоединился: 2009-02-16 16:53:28.863333
|
Во я лохонулся:'(
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-20 20:52:19.513333
|
|
|
Fobes
Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
|
Здравствуйте… Может ли кто-нибудь написать все символы табуляции для iostream библиотеки ? В нете ничего толкового так и не нашел… Плиз очень надо…[&o]
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-20 21:04:49.350000
|
|
|
Таксист
Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
|
:)Возможно я не понял вотрос … Специальные символьные константы '\b' - Удаление предыдущего символа '\f' - Подача бумаги '\n' - Новая строка '\r' - Возврат каретки '\t' - Горизонтальная табуляция '\v' - Вертикальная табуляция '\a' - Сигнал '\N' - Восмеричная константа '\xN' - Шеснадцатеричная константа '\"' - Двойная кавычка '\\' - Обратный слэш '\'' - Одинарная кавычка
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-21 10:45:59.976666
|
|
|
Fobes
Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
|
Пасибо….
int main(int argc, char* argv[])
{
int a[5];
cout <<"a[1] >> ";
cin >> a[1];
cout <<"a[2] >> ";
cin >> a[2];
cout <<"a[3] >> ";
cin >> a[3];
cout <<"a[4] >> ";
cin >> a[4];
cout <<"a[5] >> ";
cin >> a[5];
getch();
return 0;
}
Есть массив из 5 целых чисел, как мне его просканировать на количество не нулевых элементов ? Можете посоветовать какую-нибудь книгу, где все эти тонкости описываются, а то в той которую я читаю ничего нету…??
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-21 11:11:38.280000
|
|
|
Таксист
Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
|
Поищи операторы цикла, и внимательно прочитай. Цикл for… Цикл while… А также прочитай условный оператор if
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-21 11:37:33.876666
|
|
|
Таксист
Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
|
Возьми лист бумаги и простым русским языком напиши как ты можешь это сделать. Массив представь как набор карточек под номерами. k[0]..k[5] (k[n]) Обязательно оперируй словами - "если", "пока" Пытайся сократить свое описание. Выражения объедини фигурными скобками а условия круглыми. Предложения заканчивай не точкой а точкой с запятой. Замени слова больше, меньше , равно и неравно — на знаки > < == !=. Зайди в гугль переводчик и переведи на английский. И получишь то что тебе нужно…
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 13:47:48.223333
|
|
|
Zmaster
Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
|
Читай, что написано: //1 столбец quote:
Ошибка установки следующих компонентов: // //тут пошли компоненты. // //2 столбец quote:
Используйте следующий ссылки для поиска причины ошибки: //тут пошли ссылки, одна из них - просмотреть лог ошибок (view error log) //и почитай еще файл readme.htm (на который ссылка там тоже дана). Вобщем читай что написано, и смотри.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 14:11:20.123333
|
|
|
Rybik
Сообщений: 11
Оценки: 0
Присоединился: 2009-02-01 23:47:36.190000
|
просмотрел…. ничё о этом компоненте не написано, хотя в инете полно таких случаев но никто ответ не может дать=)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 15:13:25.103333
|
|
|
D. Scandal
Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
|
quote:
ORIGINAL: Rybik просмотрел…. ничё о этом компоненте не написано, хотя в инете полно таких случаев но никто ответ не может дать=) Где подробная инфа об ошибке? Без нее можно посоветовать, разве что, установить рекомендуемые обновления в системе Microsoft Update.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 15:18:10.943333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Ещё можно посоветовать переустановить windows, выучить английский и научиться читать.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 15:43:31.156666
|
|
|
Rybik
Сообщений: 11
Оценки: 0
Присоединился: 2009-02-01 23:47:36.190000
|
всё спасибо нашёл тут http://social.msdn.microsoft.com/forums/en-US/netfxsetup/thread/8c93cd6a-4b03-48c4-ac07-97a177573037/ токо не знаю до сих пор как оно зароботало=)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-26 19:03:18.193333
|
|
|
Ecstazy
Сообщений: 5
Оценки: 0
Присоединился: 2009-02-24 18:45:44.263333
|
можно ещё операцию присваивания перегрузить, а вообще лучше написать свой продвинутый класс который будет заменять массив перегрузить для него все наиболее нужные операции.(если хочешь препода удивить)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-26 19:24:58.243333
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: Ecstazy можно ещё операцию присваивания перегрузить можно quote:
ORIGINAL: Ecstazy а вообще лучше написать свой продвинутый класс который будет заменять массив перегрузить для него все наиболее нужные операции бывает и такое, что лучше quote:
ORIGINAL: Ecstazy (если хочешь препода удивить) если хочешь удивить препода - облей себя бензином на паре и подожги, удивления будут полные штаны ну а для выбора метода решения есть более подходящие критерии
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-28 14:11:46.880000
|
|
|
kent90
Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
|
напишите пожалуйста ссылку на пост, где абсуждаются русские символы в с++, точно видел, а найти не могу, спасибо
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-28 20:55:45.383333
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
c++ и qt, при компиляции выползает ошибка: g++: object_script.standart: No such file or directory g++: dialogs.Release: No such file or directory появилось такое после инклуда FileDialog.h в Menu.h и реализации FileDialog объекта в Menu.h, до этого было по-другому и всё работало : Menu.h:
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include "FileDialog.h"
class Menu : public QMenuBar
{
Q_OBJECT;
public:
Menu(QWidget*);
}; Menu.cpp:
...
Menu::Menu(QWidget *parent)
: QMenuBar(parent)
{
//Menu
QMenu *fileMenu = this->addMenu("File");
//Actions
//a1 ~ Open file
[color="#0000ff"] FileDialog *fd = new FileDialog(this);[/color]
QAction *a1 = new QAction(this);
a1->setStatusTip("Open files");
a1->setShortcut(tr("Ctrl+o"));
connect(a1, SIGNAL(triggered()),
fd, SLOT(open()));
//Build Menu
fileMenu->addAction(a1);
fileMenu->addSeparator();
} Menu.h инклудится в MainWindow.h MainWindow.cpp:
//Menu Bar
Menu *menuBar = new Menu(this);
setMenuBar(menuBar);
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-28 21:45:53.003333
|
|
|
tеstеr
Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
|
Думаю #include "FileDialog.h" надо писать там где будешь использовать FileDialog, т.е. в Menu.cpp.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-29 00:42:47.320000
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
quote:
ORIGINAL: tеstеr Думаю #include "FileDialog.h" надо писать там где будешь использовать FileDialog, т.е. в Menu.cpp. я всегда так делаю и работает. попробывал - тоже самое меня сама ошибка напрягает, не могу понять в чём траблы
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-29 04:14:01.956666
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
Разобрался. правда бред какой-то: удалил всё кроме сорцев, скомпили, собрал. теперь всё нормально работает
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-30 22:27:48.840000
|
|
|
Crazy Tosser
Сообщений: 4
Оценки: 0
Присоединился: 2009-03-11 15:55:54.203333
|
Киньте пожалуйста С++ на почту [email=parker1935@rambler.ru]parker1935@rambler.ru[/email] или хотяби ссилку на скачку.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-03-30 23:18:52.046666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: Crazy Tosser Киньте пожалуйста С++ на почту [email=parker1935@rambler.ru]parker1935@rambler.ru[/email] или хотяби ссилку на скачку. какой С++ тебе скинуть??? Может тебе среда разработки нужна?)) з.ы. Мелкософтовскую вижуал студию или билдер только на почту и кидать… вот пара ссылок: http://torrents.ru/forum/viewtopic.php?t=1655676 http://torrents.ru/forum/viewtopic.php?t=365896 http://torrents.ru/forum/viewtopic.php?t=784085
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 12:05:07.360000
|
|
|
VNixon
Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
|
всем привет! кто нибудь знает что нибудь по этой теме: "реализация модели страничного распределения памяти, с выгрузкой первой попавшейся страницы"? ОЧЕНЬ НАДО! если кто что знает, поделитесь инфой плиззз!!!
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 12:27:30.396666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Что именно непонятно / интересует?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 19:15:21.780000
|
|
|
VNixon
Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
|
мне надо написать легкую программку которая будет показывать как это работает. можешь помочь?если не исходником, то хотя бы литературой. ОЧЕНЬ ВЫРУЧИШЬ!!!
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 19:37:29.870000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Тебе надо реализовать своё механизм работы с виртуальной памятью? ) Лёгкой программки не получиццо. Да и очень абстрактные у тебя требования. Подобные задачи обычно решаются при написании ОСей.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 19:58:54.370000
|
|
|
Таксист
Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
|
Достаточно подробное описание здесь… http://www.citforum.ru/operating_systems/sos/glava_7.shtml Если не секрет, где такие легкие задачки дают?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 20:03:38.450000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
А я уже хотел в гугель посылать… Ему нужно демонстрационный проект, аля "легкую программку".
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 20:19:52.283333
|
|
|
Таксист
Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
|
quote:
"реализация модели страничного распределения памяти, с выгрузкой первой попавшейся страницы"? Возможно - это не полноценное ТЗ. Как выглядит задание? Обещать не буду - но подумаю у тебя( Vnixon) какие мысли?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 23:04:40.353333
|
|
|
VNixon
Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
|
_SaZ_ и Таксист, спасибо что откликнулись! Не буду скрывать, это мне такой курсовой проект задали в РГСУ, у меня специальность АСУ. нам толком ничего не объясняи, а времени разбираться во всем самому просто не было, вот за 5 дней до защиты пытаюсь что-то наваять. единственное что могу добавить, эту тему мне надо реализовать желательно под линуксом. нарыл в сети книжку одну, про менеджер виртуальной памяти, там возможно что-то есть, она стоит 4300р., но она блин вся на английском, переводить только месяц буду блин! вот такая жопа! :)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 23:09:44.096666
|
|
|
VNixon
Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
|
мне самое главное показать при помощи этой программки как в страничной организации памяти происходит случайная выгрузка страниц памяти.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-02 08:02:37.893333
|
|
|
Таксист
Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
|
Сдается мне что задачка не в этот раздел(Для новичков). Что за пять дней до защиты, задание дали??? В данной задаче разницы нет - под Linux или нет. Вот набросок, совсем сырой, но уже рабочий Дальше сам справишься.
/* модель страничной виртуальной памяти */
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define MAX_ADDRESS 0xFFF /* размер виртуальной памяти */
#define SIZE_PAGE 512 /* Размер страницы */
#define NUM_PAGE_RAM 4 /* Количество страниц в памяти */
struct page_table { /* Структура для таблицы описания страниц */
char *page; /* Указатель на страницу если она в памяти */
char unload; /* метка выгрузки в файл (1 - искать странницу в файле; 0 - только в памяти) */
char updаtе; /* признак модификации страницы ( 1 - страница изменилась 0 - страница не менялась) */
char not_unload; /* признак невыгружаемости(1 - выгрузка запрещена 0 - можно выгружать ) */
int statistic; /* количество обращений к странице ( при достижении максимума сбросить у всех страниц)*/
}; typedef struct page_table table;
struct virtual_ram{ /* Структура описания виртуальной памяти */
int size; /* Размер памяти в байтах */
int page_size; /* размер страницы в байтах */
int num_pages; /* общее количество страниц */
int num_p_ram; /* количество страниц в памяти */
table *tab; /* Указатель на таблицу страниц */
char *page; /* Указатель на отображенные страницы */
char *file_name; /* Имя файла подкачки */
FILE *fp; /* Файл подкачки */
}; typedef struct virtual_ram vram;
int m_log2(double x){ return (int)(float)(1.4426950408889634074*log(x)); }
/* почти случайное число в заданном диапазоне */
int rand_my(int min, int max){return rand()%(max-min+1)+min;}
int get_num_page(vram *r,int address) /* исходя из размера страницы - берем номер страницы из адреса */
{return address >> (int)m_log2(r->page_size);}
int get_v_page(vram *r,int address)/* берем смещение из адреса */
{ return address^(get_num_page(r,address) << (int)m_log2(r->page_size));}
/* Вывод подробной информации о состоянии виртуальной памяти */
int info_ram(vram *r){
int i;
printf("\n\n");
printf("Имя файла подкачки страниц: %s\n",(*r).file_name);
printf("Размер памяти в байтах: %i\n",(*r).size);
printf("Размер страницы в байтах: %i\n",(*r).page_size);
printf("Общее количество страниц: %i\n",(*r).num_pages);
printf("Количество страниц в памяти: %i\n",(*r).num_p_ram);
printf("Указатель на таблицу страниц: %i\n",(*r).tab);
for(i=0;i<(*r).num_p_ram;i++) printf("Указатель на %i страницы: %i\n",i+1,(*r).page+i*(*r).page_size);
/* Количество и номера страниц в памяти */
for(i=0;i<(*r).num_pages;i++){
if((*r).tab[i].page != 0) printf("В памяти страница %i по физ. адресу: %i\n",i,(*r).tab[i].page);
}
return 0;
}
char *unload_page(vram *r){ /* выгрузить страницу */
int x;
char *rand_p;
/* получаем случайное число в диапазоне количества страниц в памяти */
x = rand_my(0,(*r).num_p_ram - 1);// printf("unload > 1 %i\n",x);
/* выбираем случайный указатель на страницу в памяти */
rand_p = (*r).page + x*(*r).page_size;// printf("unload > 2 %i\n",*rand_p);
/* ищем страницу в таблице (чтобы узнать номер страницы) по указателю */
for (x=0; x < (*r).num_pages; x++){
//printf("unload > 3 %i %i [ %i <> %i]\n",x, (*r).num_pages, (*r).tab[x].page, rand_p);
if((*r).tab[x].page == rand_p){
/* выгружаем в файл(если на то есть причины - страница изменялась и т.д.)*/
/* Установим позицию записи в файле */
if(fseek((*r).fp, x * (*r).page_size, SEEK_SET)){ printf("Ошибка установки позиции в файле\n"); return 0;}
if(fwrite((*r).tab[x].page,sizeof(char),(*r).page_size,(*r).fp) != ((*r).page_size*sizeof(char)))
{ printf("Ошибка записи в файл\n"); return 0;}
(*r).tab[x].page = 0; /* обнулим указатель выгруженной страницы */
return rand_p; /* указатель на освободившееся место вернем */
}
}
/* все плохо вернем ноль */
printf("не найдена страница \n");
return 0;
}
int load_page(vram *r,int num){ /* загрузить страницу */
char *x;
int tmp;
//printf("load > 1 \n");
x = unload_page(r); /* выгрузить страницу и запомним освобожденное место */
if(!x){ printf("Ошибка выгрузки страницы\n"); return 0; }
(*r).tab[num].page = x; /* установим указатель на свободное место */
//printf("load > 2 %i\n",x);
/* Установим позицию чтения в файле */
if(fseek((*r).fp, num * (*r).page_size, SEEK_SET)){ printf("Ошибка установки позиции в файле\n"); return 0;}
tmp = (int)fread((*r).tab[num].page,sizeof(char),(*r).page_size,(*r).fp);
/*if(tmp != ((*r).page_size*sizeof(char)))
{ printf("Ошибка чтения файла %lu, %i\n", (*r).page_size*sizeof(char),tmp); return 0;}
*/
return 0;
}
char get_byte(vram *r, int address){ /* Взять значение в виртуальной памяти */
int num; /* номер страницы */
int v; /* смещение */
num = get_num_page(r,address); /* разложим адрес на страницу */
v = get_v_page(r,address); /* и смещение */
//printf("get_byte > page %i v %i",num,v);
/* проверим страницу если она в не памяти загрузим страницу и вернем значение */
if(!(*r).tab[num].page) load_page(r, num);
//printf("get_byte > page %i v %i > %i\n",num,v,(*r).tab[num].page[v]);
return (*r).tab[num].page[v];
}
char paste_byte(vram *r,char x, int address){ /* Положить значение в виртуальную память */
int num; /* номер страницы */
int v; /* смещение */
char tmp;
num = get_num_page(r,address); /* разложим адрес на страницу */
v = get_v_page(r,address); /* и смещение */
/* проверим страницу если она в не памяти загрузим страницу и поместим значение */
if(!(*r).tab[num].page) load_page(r, num);
tmp = (*r).tab[num].page[v];
(*r).tab[num].page[v] = x;
return tmp; /* Вернем старое значение ячейки ( а вдруг пригодиться )*/
}
vram *init_vram(int size,int page_size, char *name_file){ /* Инициализация виртуальной памяти */
struct virtual_ram *ram ; /* указатель на память */
int i;
ram = (struct virtual_ram*)malloc(sizeof(vram)); /* выделяем память под описание виртуальной памяти :))) */
ram->fp = fopen(name_file,"w+b"); /* Файл подкачки */
if(!ram->fp){printf("Ошибка (открытия/создания) файла\n"); return 0;}
ram->file_name=name_file; /* Имя файла подкачки */
ram->size = size; /* Размер памяти в байтах*/
ram->page_size = page_size; /* размер страницы в байтах */
ram->num_pages = 1 + size / page_size ; /* количество страниц */
(*ram).num_p_ram = NUM_PAGE_RAM;
ram->tab = (table*)malloc(sizeof(table)*ram->num_pages); /* Указатель на таблицу страниц */
ram->page = (char*)malloc(sizeof(char)*ram->num_p_ram*page_size); /* Указатель на отображенные страницы */
for(i=0;i<ram->num_pages;i++){
if(i < ram->num_p_ram) (*ram).tab[i].page = ram->page + (i*page_size); /* для первых страниц установим указатель */
else (*ram).tab[i].page = 0; /* ставим указатель в ноль если нет места для страницы */
(*ram).tab[i].unload = 0; /* метка выгрузки в файл */
(*ram).tab[i].updаtе = 0; /* признак модификации страницы */
(*ram).tab[i].not_unload = 0; /* признак невыгружаемости */
(*ram).tab[i].statistic = 0; /* количество обращений к странице */
}
/* почистим нулем */
for(i=0;i < (ram->num_p_ram * page_size);i++){ram->page[i] = 0;}
return ram;
}
int free_vram(vram* r){ /* нужно закрыть файл и освободить память */
fclose(r->fp); /* Закрываем файл подкачки */
remove(r->file_name); /* удалим файл */
free(r->page); /* Убиваем отображенные страницы */
free(r->tab); /* таблицу страниц */
free(r); /* описание виртуальной памяти */
return 0;
}
int main(void)
{
int i,v;
vram *ram1;
ram1 = init_vram(MAX_ADDRESS,SIZE_PAGE,"my_v1.ram"); /* создадим виртуальную память */
if(!ram1)return 0; /* неудача выходим */
info_ram(ram1);
/**/
for(i=0; i< ram1->num_p_ram ;i++)
for(v=0;v<ram1->page_size;v++) paste_byte(ram1,v,i*512+v);
for(i=0; i< ram1->num_p_ram ;i++)
for(v=0;v<ram1->page_size;v++) printf("|%i:%i\n",i*512+v, get_byte(ram1,i*512+v));
free_vram(ram1); /* Уберем после себя */
return (0);
}
p.s. Может еще кто посмотрит. А то я сейчас помогу человеку.:D
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-04-02 15:53:43.560000
|
|
|
Alan Cox
Сообщений: 33
Оценки: 0
Присоединился: 2009-01-20 00:06:46.950000
|
вопрос очень прост - сам понимаю это, но в универе мы это будем учить не скоро, а у меня есть пару задумок, которые хочется удоволетворить…. Как в С++ написать программу, чтобы она открывала командную строку(cmd) и прописовала в ней то, что необходимо мне…к примеру, начать форматирование или копировать какой-то файл и тд и тп…Заранее спасибо:)
|
|
|
|
|