Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2009, 21:06   #1
#Nii
Пользователь
 
Аватар для #Nii
 
Регистрация: 16.10.2008
Сообщений: 11
По умолчанию Организация управления ресурсами в ОС bat+cpp (помогите)

Вообще есть почти готовая программа, но в ней есть ошибки не пойму как и где исправлять.

по заданию

Создать 3 программы
1 - C-программу организующую меню на экране состаящее из пунктов, файл должен иметь имя MenuN.cpp
атрибуты для построения окна и тексты пунктов считать из данных AtribN.txt который должен быть предварительно создан
Номер выбраного пункта записать в новый файл данных OtvN.txt
Файл MenuN должен вызываться с указанием аргумента имени файла атрибутов окна AtribN.txt

2 С-программу выполняющий действия указанные в задании ProgN.cpp
ProgN.cpp должен содержать проверку аргументов в строке вызова
Вывести все результаты вычислений на экран и в файл на диск ResN.dat

3 Командный файл содержащий команды, позволяющие создать интерфейс при организации диалогового меню CmN.bat. Использовать в нем вызовы файлов MenuN и ProgN

Вот мое индивидуальное задание

Menu.cpp
окно вывесте в центре правого края экрана обрамленое символами "+" содержащие пункты меню:
- Наличие монохромного адаптера
- Изменить номер байта в секторе

Выход из меню завершить клавишей ->

Prog.cpp
В зависимости от номера пункта меню указаного в качестве параметра при вызове Prog.exe проверяет наличие монохромного видеоадаптера или изменяет указанный байт в указаном секторе
Если видеоадаптер имеется то завершить программу с кодом 0 иначе с кодом -1
Если указаный байт изменился, то завершить программу с кодом 1, иначе с кодом 0

cm.bat
Вызвать файл cm.bat c одним параметром res.dat
Установить цвет экрана -белый, цвет символов красный. Вывести текущую дату
Проанализировать код завершения: если он равен -1, то содержимое файла res.dat объеденить с содержимым файла otv.txt и сделать копию объединеного файла на диск A в текущий каталог, проверив предварительно, существует ли такой каталог, написав соответствующие команды, а при отсутствии такого создать
если он равен 1, то удалить файл atrib.txt иначе вывести содержимое текущих каталогов дисков на экран

Теперь коды программ
Atrib6.txt
40
10
79
20

Menu.cpp
Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(int argc,char *argv[])
{
clrscr();
int x,y,x1,y1,x2,y2,c,n;
FILE*f,*f1;
if(!(f=fopen(argv[1],"r+"))) {perror("The file not found"); exit(-1);}
fscanf(f,"%d",&x1);
fscanf(f,"%d",&y1);
fscanf(f,"%d",&x2);
fscanf(f,"%d",&y2);
for (x=x1,y=y1;x<=x2;x++)
{gotoxy(x,y);
printf("+");
}
for(x=x1,y=y1;y<=y2;y++)
{gotoxy(x,y);
printf("+");}
for(x=x1,y=y2;x<=x2;x++)
{gotoxy(x,y);
printf("+");}
for(x=x2,y=y1;y<=y2;y++)
{gotoxy(x,y);
printf("+");
}
gotoxy(42,12);
printf("1.Search monochrome videoadapter");
gotoxy(42,16);
printf("2.Number of bytes in sector");
scanf("%d",&n);
f1=fopen("Otv6.txt","w+");
fprintf(f1,"%d",n);
fclose(f);
fclose(f1);
c=getchar();
if(c=='1')
exit(1);
else
exit(0);
}


Prog6.cpp
Код:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<dos.h>
#include<bios.h>
int main(int argc,char *argv[])
{int sectsize,x,a,n;
unsigned char buf[512],b[512];
FILE *i,*in;
if (argc<2) {fprintf(stderr,"net parametrov"); exit(2);}
i=fopen("Otv6.txt","r+");
in=fopen("Res6.dat","w+");
fscanf(i,"%d",&n); fclose(i);
if(n==1)
{a=peek (5, 0x0410);
if(a==1)
      { printf(" \n there is monochrome videoadapter :\n");
      fprintf(in," \n there is monochrome videoadapter :\n");
      exit (0);}
    else  printf(" \n monochrome videoadapter not found :\n");
   fprintf(in," \n monochrome videoadapter not found :\n");
    exit(-1);}
if (n==2)
{x=1;
absread(x,1,0,buf);
sectsize =buf[0xb]+buf[0xc]*256;
cout<<"\n number of bytes in sector  "<<sectsize;
fprintf(in,"\n number of bytes in sector %d",sectsize);
fclose(in);
if(sectsize<2)
exit(0);
else
exit(1);
getch();}
}
cm6.bat
Код:
echo off
Menu6 Atrib6.txt
Prog6 OTV6.txt
color 74
date
if errorlevel -1 goto b
if errorlevel 1 goto c
dir A:\
goto end
:b
copy %1 + OTV6.txt nik.txt
copy nik.txt A:\FL\ 
goto end
:c
del Atrib6.txt
goto end
:end

Вообщем при запуске bat-файла появляется меню с двумя опциями 1 Поиск монохр адпт. 2 Сколько байтов в секторе. Поиск Монохромного адапптера проходит нормально, а вот когда я нажимаю 2-ю опцию на количество байт в секторе, программа не реагиарует, а пропускает и показывает сразу текущую дату.Проблема в том что не работает вторая опция меню.
Может проблема в связи между cm6.bat и prog6.exe или ошибка в самом prog6? Вообщем не показывает он кол-во cекторов.

Еще не понимаю как сделать
Цитата:
- Изменить номер байта в секторе
знаю как посчитать кол-во, может кто знает каким образом выглядит код на изменение номер байта в секторе и что это такое?

Цитата:
Выход из меню завершить клавишей ->
Каким образом это засунуть в код? В методичке так написано, но какую клавишу имено ставить? И как это написать в код?

Последний раз редактировалось #Nii; 07.06.2009 в 21:11.
#Nii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать конвертер cpp->html Vano-sie72 Помощь студентам 1 18.05.2009 22:15
Помогите написать конвертер cpp->html Vano-sie72 Фриланс 1 18.05.2009 15:57
Помогите сделать bat файл. p1vorak Помощь студентам 3 12.01.2008 19:02
Помогите с ресурсами Dude_first Общие вопросы Delphi 1 11.09.2007 16:24
Помогите, пожалуйста, написать *.bat #000 Свободное общение 1 30.05.2007 18:42