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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
CaLLIoK
0 / 0 / 0
Регистрация: 14.06.2009
Сообщений: 3
#1

Не знаю как заполнить блок схему. - C++

15.06.2009, 17:34. Просмотров 1860. Ответов 2
Метки нет (Все метки)

Есть программа.
/*-----------"Проверка состава оборудования"--------------*/

/* Подключение стандартных заголовков */
#include <dos.h>
#include <conio.h>
#include <stdio.h>

/*--------------------------------------------------------*/
void main()
{
unsigned char type_PC, /* Тип компьютера */
a,b; /* Переменные для определения */
/* характеристик памяти ПЭВМ */
unsigned int konf_b; /* Байт конфигурации из BIOS */
char *type[]={"AT","PCjr","XT","IBM PC","unknown"};
unsigned char typ1A[]={0,1,2,4,5,6,7,8,10,11,12,0xff};
char *types1A[]={"нема дисплею","MDA, моно","CGA, цв.",
"EGA, цв.","EGA, моно","PGA, цв.",
"VGA, моно, анал.","VGA, кол., анал.",
"MCGA, кол., цифр.","MCGA, моно, анал."
"MCGA, кол., анал.","неизвестный тип",
"непредусмотренный код"};
unsigned int j; /* Вспомогательная переменная */
unsigned int seg; /* Сегмент ПЗУ */
unsigned int mark=0xAA55; /* Маркер ПЗУ */
unsigned char bufVGA[64]; /* Буфер данных VGA */
union REGS rr;
struct SREGS sr;

textbackground(0);
clrscr();
textattr(0x0a);
cprintf("Лабораторная работа N5");
cprintf("\nПроверка состава оборудования");

/* Определения типа компьютера */
type_PC=peekb(0xF000,0xFFFE);
if( (type_PC-=0xFC)>4)
type_PC=4;
textattr(0x0b);
cprintf("\nТип компьютера: ");
textattr(0x0f);
cprintf("%s\n\r",type[type_PC]);

/* Конфигурация*/
konf_b=peek(0x40,0x10); /* Чтение байта оборудования */
/* из памяти BIOS */
textattr(0x0b);
cprintf("Конфигурация:\n\r");

/* Количество дисководов */

textattr(0x0e);
cprintf(" Дисководов ГМД: ");
textattr(0x0f);
if(konf_b&0x0001)
cprintf("%d\n\r",((konf_b&0x00C0)>>6)+1);
else
cprintf("нет\n\r");
textattr(0x0e);
cprintf(" Математич. сопроцессор: ");
textattr(0x0f);
if(konf_b&0x0002)
cprintf("есть\n\r");
else
cprintf("нет\n\r");
textattr(0x0e);
cprintf(" Тип дисплейного адаптера: ");
textattr(0x0f);

/* Определение активного адаптера */
/* Предположим наличие VGA */
rr.h.ah=0x1a;
rr.h.al=0;
int86(0x10,&rr,&rr);
if(rr.h.al==0x1a) /* Поддерживается функция 1Ah */
{ /* прерывания 10h */
for(j=0;j<12;j++)
if(rr.h.bl==typ1A[j])
break;
cprintf("%s",types1A[j]);

if(j>0 && j<12)
{
rr.h.ah=0x1b;
rr.x.bx=0;
sr.es=FP_SEG(bufVGA);
rr.x.di=FP_OFF(bufVGA);
int86x(0x10,&rr,&rr,&sr);
cprintf(", %d Кбайт\n\r",((int)bufVGA[49]+1)*64);
}
else
cprintf("\n\r");
}
else
{
/* Предположим наличие EGA */
rr.h.ah=0x12;
rr.h.bl=0x10;
int86(0x10,&rr,&rr);
if(rr.h.bl!=0x10) /* Поддерживается функция 12h */
{ /* прерывания 10h */
cprintf("EGA");
if(rr.h.bh)
cprintf(" моно");
else
cprintf(" кол.");
cprintf(", %d Кбайт\n\r",((int)rr.h.bl+1)*64);
}
else
{
/* CGA или MDA */
switch(konf_b&0x0030)
{
case 0: cprintf("EGA/VGA\n\r");break;
case 0x10: cprintf("CGA,40\n\r");break;
case 0x20: cprintf("CGA,80\n\r");break;
case 0x30: cprintf("MDA");break;
}
}
}


/* Блоки ОЗУ на системной плате */
textattr(0x0e);
cprintf("\n\r Первичный блок памяти: ");
textattr(0x0f);
switch (konf_b&0x000C)
{
case 0:cprintf("16 Кбайт\n\r");break;
case 4:cprintf("32 Кбайт\n\r");break;
case 8:cprintf("48 Кбайт\n\r");break;
case 12:cprintf("64 Кбайт или больше\n\r");break;
}

/* Количество последовательных портов RS-232 */
textattr(0x0e);

cprintf(" Портов RS232: ");
textattr(0x0f);
cprintf("%d\n\r",(konf_b&0x0E00)>>9);

/* Наличие джойстика */
textattr(0x0e);
cprintf(" Джойстик: ");
textattr(0x0f);
if(konf_b&0x1000 )
cprintf("есть\n\r");
else
cprintf("нет\n\r");

/* Количество параллельних принтеров */
textattr(0x0e);
cprintf(" Принтеров: ");
textattr(0x0f);
cprintf("%d\n\n\r",(konf_b&0xC000)>>14);

/* Объем оперативной памяти */

textattr(0x0e);
cprintf("Объем оперативной памяти: ");
textattr(0x0f);
cprintf("%d Кбайт\n\r",peek(0x40,0x13));
textattr(0x0e);

/* Наличие и объем extended-памяти */
outportb(0x70,0x17);
a=inport(0x71);
outportb(0x70,0x18);
b=inport(0x71);
cprintf("Объем extended-памяти: ");
textattr(0x0f);
cprintf("%d Кбайт\n\n\r",(b<<8)|a);


/* Наличие дополнительных ПЗУ */
for( seg=0xC000;seg<0xFFB0;seg+=0x40)
/* Просмотр памяти от C000:0 с шагом 2 К */
if(peek(seg,0)==mark) /* Маркер найден */
{
textattr(0x0a);
cprintf("Адрес ПЗУ =");
textattr(0x0f);
cprintf(" %04x",seg);
textattr(0x0a);
cprintf(". Длина модуля = ");
textattr(0x0f);
cprintf("%d",512*peekb(seg,2));
textattr(0x0a);

cprintf(" байт\n\r",peekb(seg,2));
}

/* Определение версии операцийной системы */
rr.h.ah=0x30;

intdos(&rr,&rr);
textattr(0x0c);
cprintf("\n\rВерсия MS-DOS ");
textattr(0x0f);
cprintf("%d.%d\n\r",rr.h.al,rr.h.ah);

textattr(0x0a);
gotoxy(30,24);
cprintf("Нажмите любую клавишу");
textattr(0x07);
getch();
clrscr();
}
Программа состоит только из основной функции main(). Выделения фрагментов программы в отдельные процедуры не требуется, потому что нет таких операций, которые во время работы программы выполняются многократно.
Как понял в ней нету пользовательских функций к которым нужно рисовать блок схемы.Выходит нужна только одна блок схема.А вот что в ней писать я не знаю.
Например делать просто из прямоугольников и в них писать что написано в комментариях или как то по другому.Подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2009, 17:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не знаю как заполнить блок схему. (C++):

Как сделать блок схему? - C++
Как сделать блок схему? #include&lt;iostream.h&gt; #include&lt;conio.h&gt; int s=0; void main() { clrscr(); for(int i=1;i&lt;5;i++) { ...

Как записаить блок-схему структуры - C++
Дан код вначале которого записана структура typedef struct{ string Name; string Capital; string Adress; string...

Составить схему алгоритма(блок-схему) по заданию - C++
Дана матрица S. Нужно составить схему алгоритма, который элементы в каждом столбце этой матрицы упорядочит по возрастанию, если по модулю...

Как реализовать блок-схему на с++ с помощью while или do-while - C++
как реализовать такую блок-схему на с++? с помощью while или do-while?

как построить блок схему для этой программы - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; void main() { FILE*rez;rez=fopen(&quot;Z:\cpp\lab3\1.txt&quot;,&quot;w&quot;); int mas;...

Объясните как Блок схему составить для цикла for - C++
ipMatr(); for(opMatr(),k=0;k&lt;=n;k++) //прямой ход метода Гаусса; {for(aa=fabs(a),i=k,j=k+1;j&lt;=n;j++)//поиск макс. ел-та; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
KaRaNTiN
44 / 44 / 1
Регистрация: 10.06.2009
Сообщений: 311
Записей в блоге: 2
15.06.2009, 23:45 #2
Парни, помогите, аналогичное задание!... Пожалуйста! =)
Whistler
3 / 3 / 1
Регистрация: 27.11.2010
Сообщений: 17
27.11.2010, 15:12 #3
SaLLIoK, не знаю,розрешено ли это правилами форума,но вот ваша блок-схема
fileshare.in.ua/3936985
привет от ФКС 207
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2010, 15:12
Привет! Вот еще темы с ответами:

как сделать блок-схему к этой части кода ? - C++
int InitArray(int i) { std::cin&gt;&gt;arr; if(arr==0) return count; count++; InitArray(i+1); }

Как правильно построить блок-схему(просто объясните) - C++
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;process.h&gt; int n; void vvod(float a) { int...

Найти сумму первых n членов ряда Фибоначчи (как составить блок-схему?) - C++
как составить блок-схему алгоритма ? Задано количество членов ряда Фибоначчи. Найти их значения и значение их суммы при a0 = 0, a1...

Как сделать блок-схему для "do while" - C++
#include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; void myFunc(char *st) { int...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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