Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2009-03-14 23:01:59.326666   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
int i=1 наверное написано. Мб '\n' –ты слеш не в ту сторону поставил?)
Post #: 241
RE: Вопросы по C/C++ (Для новичков) - 2009-03-14 23:30:31.556666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Не /n а \n

—-
Genco выше написал, просто я сразу не увидел =)
Post #: 242
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 11:18:38.070000   
Fobes

Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
//--------------------------------------------------------------------------- #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include "math.h" #include &lt;vcl.h&gt; #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 &lt;&lt;endl&lt;&lt;"Enter x1 : "; cin &gt;&gt; x1; cout &lt;&lt;endl&lt;&lt;"Enter y1 : "; cin &gt;&gt; y1; cout &lt;&lt;endl&lt;&lt;"Enter x2 : "; cin &gt;&gt; x2; cout &lt;&lt;endl&lt;&lt;"Enter y2 : "; cin &gt;&gt; y2; cout &lt;&lt;endl&lt;&lt;"Enter x3 : "; cin &gt;&gt; x3; cout &lt;&lt;endl&lt;&lt;"Enter y3 : "; cin &gt;&gt; y3; x = cos(x1,x2,y1,y2); cout &lt;&lt;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 - неопознанный символ, формула косинуса с координатами…
Что я сделал не так ?
Post #: 243
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 11:56:43.503333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
ну а что такое sqr?
Post #: 244
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 12:18:41.760000   
Fobes

Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
как я понял из книги sqr- квадрат, а sqrt - кв. корень
Post #: 245
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 13:21:56.116666   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
пользуй pow(число, степень)
Post #: 246
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 13:31:22.343333   
Fobes

Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
АГА, пасибо !!!! продолжаю делать)))
Post #: 247
RE: Вопросы по C/C++ (Для новичков) - 2009-03-15 14:37:12.256666   
JetmanX

Сообщений: 17
Оценки: 0
Присоединился: 2009-02-16 16:53:28.863333
Во я лохонулся:'(
Post #: 248
RE: Вопросы по C/C++ (Для новичков) - 2009-03-20 20:52:19.513333   
Fobes

Сообщений: 36
Оценки: 0
Присоединился: 2009-03-09 19:13:48.480000
Здравствуйте…
Может ли кто-нибудь написать все символы табуляции для iostream библиотеки ? В нете ничего толкового так и не нашел… Плиз очень надо…[&o]
Post #: 249
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' - Шеснадцатеричная константа
'\"' - Двойная кавычка
'\\' - Обратный слэш
'\'' - Одинарная кавычка
Post #: 250
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 &lt;&lt;"a[1] &gt;&gt; "; cin &gt;&gt; a[1]; cout &lt;&lt;"a[2] &gt;&gt; "; cin &gt;&gt; a[2]; cout &lt;&lt;"a[3] &gt;&gt; "; cin &gt;&gt; a[3]; cout &lt;&lt;"a[4] &gt;&gt; "; cin &gt;&gt; a[4]; cout &lt;&lt;"a[5] &gt;&gt; "; cin &gt;&gt; a[5]; getch(); return 0; }
Есть массив из 5 целых чисел, как мне его просканировать на количество не нулевых элементов ?
Можете посоветовать какую-нибудь книгу, где все эти тонкости описываются, а то в той которую я читаю ничего нету…??
Post #: 251
RE: Вопросы по C/C++ (Для новичков) - 2009-03-21 11:11:38.280000   
Таксист

Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
Поищи операторы цикла, и внимательно прочитай.

Цикл for…
Цикл while…

А также прочитай условный оператор if

Post #: 252
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])
Обязательно оперируй словами - "если", "пока"
Пытайся сократить свое описание.
Выражения объедини фигурными скобками а условия круглыми.
Предложения заканчивай не точкой а точкой с запятой.
Замени слова больше, меньше , равно и неравно — на знаки &gt; &lt; == !=.

Зайди в гугль переводчик и переведи на английский.
И получишь то что тебе нужно…
Post #: 253
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 11:26:46.366666   
Rybik

Сообщений: 11
Оценки: 0
Присоединился: 2009-02-01 23:47:36.190000
здраствуйте, не подскажете почему не могу устоновить визуал студио… всё время такая ошыбка…. вот на компе норм пашет, а на ноутбуке не хочет, всё время вылетает при устоновке компонента
microsoft visual studio web authoring componen

вот скрин

Post #: 254
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 (на который ссылка там тоже дана).
Вобщем читай что написано, и смотри.
Post #: 255
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 14:11:20.123333   
Rybik

Сообщений: 11
Оценки: 0
Присоединился: 2009-02-01 23:47:36.190000
просмотрел…. ничё о этом компоненте не написано, хотя в инете полно таких случаев но никто ответ не может дать=)
Post #: 256
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.
Post #: 257
RE: Вопросы по C/C++ (Для новичков) - 2009-03-24 15:18:10.943333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ещё можно посоветовать переустановить windows, выучить английский и научиться читать.
Post #: 258
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/

токо не знаю до сих пор как оно зароботало=)
Post #: 259
RE: Вопросы по C/C++ (Для новичков) - 2009-03-26 19:03:18.193333   
Ecstazy

Сообщений: 5
Оценки: 0
Присоединился: 2009-02-24 18:45:44.263333
можно ещё операцию присваивания перегрузить, а вообще лучше написать свой продвинутый класс который будет заменять массив перегрузить для него все наиболее нужные операции.(если хочешь препода удивить)
Post #: 260
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

(если хочешь препода удивить)


если хочешь удивить препода - облей себя бензином на паре и подожги, удивления будут полные штаны

ну а для выбора метода решения есть более подходящие критерии
Post #: 261
RE: Вопросы по C/C++ (Для новичков) - 2009-03-28 14:11:46.880000   
kent90

Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
напишите пожалуйста ссылку на пост, где абсуждаются русские символы в с++, точно видел, а найти не могу, спасибо
Post #: 262
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 &lt;QMenuBar&gt; #include &lt;QMenu&gt; #include &lt;QAction&gt; #include "FileDialog.h" class Menu : public QMenuBar { &nbsp; Q_OBJECT; &nbsp;public: &nbsp; Menu(QWidget*); }; Menu.cpp:
... Menu::Menu(QWidget *parent) &nbsp; : QMenuBar(parent) { &nbsp; //Menu &nbsp; QMenu *fileMenu = this-&gt;addMenu("File"); &nbsp; //Actions &nbsp; //a1&nbsp; ~&nbsp; Open file [color="#0000ff"]&nbsp; FileDialog *fd = new FileDialog(this);[/color] &nbsp; QAction *a1 = new QAction(this); &nbsp; a1-&gt;setStatusTip("Open files"); &nbsp; a1-&gt;setShortcut(tr("Ctrl+o")); &nbsp; connect(a1, SIGNAL(triggered()), &nbsp;&nbsp;&nbsp; &nbsp; fd, SLOT(open())); &nbsp; &nbsp; //Build Menu &nbsp; fileMenu-&gt;addAction(a1); &nbsp; fileMenu-&gt;addSeparator(); } Menu.h инклудится в MainWindow.h
MainWindow.cpp:
&nbsp; //Menu Bar &nbsp; Menu *menuBar = new Menu(this); &nbsp; setMenuBar(menuBar);

Post #: 263
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.
Post #: 264
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.

я всегда так делаю и работает.
попробывал - тоже самое
меня сама ошибка напрягает, не могу понять в чём траблы
Post #: 265
RE: Вопросы по C/C++ (Для новичков) - 2009-03-29 04:14:01.956666   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
Разобрался. правда бред какой-то:
удалил всё кроме сорцев, скомпили, собрал. теперь всё нормально работает
Post #: 266
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] или хотяби ссилку на скачку.
Post #: 267
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
Post #: 268
RE: Вопросы по C/C++ (Для новичков) - 2009-03-31 00:36:25.690000   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
quote:

ORIGINAL: Lost_boy

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

безусловно без IDE никуда, в ней же так красиво подсвечен синтаксис… но скорее нужен компилятор.
Post #: 269
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 12:05:07.360000   
VNixon

Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
всем привет!
кто нибудь знает что нибудь по этой теме: "реализация модели страничного распределения памяти, с выгрузкой первой попавшейся страницы"?

ОЧЕНЬ НАДО!
если кто что знает, поделитесь инфой плиззз!!!
Post #: 270
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 12:27:30.396666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Что именно непонятно / интересует?
Post #: 271
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 19:15:21.780000   
VNixon

Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
мне надо написать легкую программку которая будет показывать как это работает. можешь помочь?если не исходником, то хотя бы литературой. ОЧЕНЬ ВЫРУЧИШЬ!!!
Post #: 272
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 19:37:29.870000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Тебе надо реализовать своё механизм работы с виртуальной памятью? ) Лёгкой программки не получиццо. Да и очень абстрактные у тебя требования. Подобные задачи обычно решаются при написании ОСей.
Post #: 273
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
Если не секрет, где такие легкие задачки дают?

Post #: 274
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 20:03:38.450000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
А я уже хотел в гугель посылать… Ему нужно демонстрационный проект, аля "легкую программку".
Post #: 275
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 20:19:52.283333   
Таксист

Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
quote:

"реализация модели страничного распределения памяти, с выгрузкой первой попавшейся страницы"?

Возможно - это не полноценное ТЗ. Как выглядит задание?
Обещать не буду - но подумаю у тебя( Vnixon) какие мысли?
Post #: 276
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 23:04:40.353333   
VNixon

Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
_SaZ_ и Таксист, спасибо что откликнулись!
Не буду скрывать, это мне такой курсовой проект задали в РГСУ, у меня специальность АСУ. нам толком ничего не объясняи, а времени разбираться во всем самому просто не было, вот за 5 дней до защиты пытаюсь что-то наваять. единственное что могу добавить, эту тему мне надо реализовать желательно под линуксом. нарыл в сети книжку одну, про менеджер виртуальной памяти, там возможно что-то есть, она стоит 4300р., но она блин вся на английском, переводить только месяц буду блин! вот такая жопа! :)
Post #: 277
RE: Вопросы по C/C++ (Для новичков) - 2009-04-01 23:09:44.096666   
VNixon

Сообщений: 5
Оценки: 0
Присоединился: 2009-04-01 11:56:29.153333
мне самое главное показать при помощи этой программки как в страничной организации памяти происходит случайная выгрузка страниц памяти.
Post #: 278
RE: Вопросы по C/C++ (Для новичков) - 2009-04-02 08:02:37.893333   
Таксист

Сообщений: 68
Оценки: 0
Присоединился: 2009-03-13 09:11:37.530000
Сдается мне что задачка не в этот раздел(Для новичков).
Что за пять дней до защиты, задание дали???
В данной задаче разницы нет - под Linux или нет.

Вот набросок, совсем сырой, но уже рабочий

Дальше сам справишься.
/* модель страничной виртуальной памяти */ #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #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 &gt;&gt; (int)m_log2(r-&gt;page_size);} int get_v_page(vram *r,int address)/* берем смещение из адреса */ { return address^(get_num_page(r,address) &lt;&lt; (int)m_log2(r-&gt;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&lt;(*r).num_p_ram;i++) printf("Указатель на %i страницы: %i\n",i+1,(*r).page+i*(*r).page_size); /* Количество и номера страниц в памяти */ for(i=0;i&lt;(*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 &gt; 1 %i\n",x); /* выбираем случайный указатель на страницу в памяти */ rand_p = (*r).page + x*(*r).page_size;// printf("unload &gt; 2 %i\n",*rand_p); /* ищем страницу в таблице (чтобы узнать номер страницы) по указателю */ for (x=0; x &lt; (*r).num_pages; x++){ //printf("unload &gt; 3 %i %i [ %i &lt;&gt; %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 &gt; 1 \n"); x = unload_page(r); /* выгрузить страницу и запомним освобожденное место */ if(!x){ printf("Ошибка выгрузки страницы\n"); return 0; } (*r).tab[num].page = x; /* установим указатель на свободное место */ //printf("load &gt; 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 &gt; page %i v %i",num,v); /* проверим страницу если она в не памяти загрузим страницу и вернем значение */ if(!(*r).tab[num].page) load_page(r, num); //printf("get_byte &gt; page %i v %i &gt; %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-&gt;fp = fopen(name_file,"w+b"); /* Файл подкачки */ if(!ram-&gt;fp){printf("Ошибка (открытия/создания) файла\n"); return 0;} ram-&gt;file_name=name_file; /* Имя файла подкачки */ ram-&gt;size = size; /* Размер памяти в байтах*/ ram-&gt;page_size = page_size; /* размер страницы в байтах */ ram-&gt;num_pages = 1 + size / page_size ; /* количество страниц */ (*ram).num_p_ram = NUM_PAGE_RAM; ram-&gt;tab = (table*)malloc(sizeof(table)*ram-&gt;num_pages); /* Указатель на таблицу страниц */ ram-&gt;page = (char*)malloc(sizeof(char)*ram-&gt;num_p_ram*page_size); /* Указатель на отображенные страницы */ for(i=0;i&lt;ram-&gt;num_pages;i++){ if(i &lt; ram-&gt;num_p_ram) (*ram).tab[i].page = ram-&gt;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 &lt; (ram-&gt;num_p_ram * page_size);i++){ram-&gt;page[i] = 0;} return ram; } int free_vram(vram* r){ /* нужно закрыть файл и освободить память */ fclose(r-&gt;fp); /* Закрываем файл подкачки */ remove(r-&gt;file_name); /* удалим файл */ free(r-&gt;page); /* Убиваем отображенные страницы */ free(r-&gt;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&lt; ram1-&gt;num_p_ram ;i++) for(v=0;v&lt;ram1-&gt;page_size;v++) paste_byte(ram1,v,i*512+v); for(i=0; i&lt; ram1-&gt;num_p_ram ;i++) for(v=0;v&lt;ram1-&gt;page_size;v++) printf("|%i:%i\n",i*512+v, get_byte(ram1,i*512+v)); free_vram(ram1); /* Уберем после себя */ return (0); }
p.s. Может еще кто посмотрит. А то я сейчас помогу человеку.:D
Post #: 279
RE: Вопросы по C/C++ (Для новичков) - 2009-04-02 15:53:43.560000   
Alan Cox

Сообщений: 33
Оценки: 0
Присоединился: 2009-01-20 00:06:46.950000
вопрос очень прост - сам понимаю это, но в универе мы это будем учить не скоро, а у меня есть пару задумок, которые хочется удоволетворить….
Как в С++ написать программу, чтобы она открывала командную строку(cmd) и прописовала в ней то, что необходимо мне…к примеру, начать форматирование или копировать какой-то файл и тд и тп…Заранее спасибо:)
Post #: 280
Страниц:  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
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.