PDA

View Full Version : چگونه از clrscr() در برنامه استفاده کنم؟



armintirand
شنبه 28 شهریور 1388, 20:17 عصر
سلام من جدیداً هر برنامه که توش از clrscr() استفاده میکنم کام÷ایلر به اون ارور میگیره.از ویژوال و codblock و borland هم استفاده کردم ولی نشد.
اینم یک نمونه که توش از این دستور استفاده کردم ولی نشد .
سوزس:


#include <iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include <windows.h>
//using namespace std;
const int num_book=100;
struct struc_book{
char book_name[20];
char book_auther[20];
char book_writer[20];
int books_number;
}s_book[num_book];
class lib{
public:
int menue_select(void);
void gotoxy ( short x, short y );
int find_free(void);
void list_all(void),init_list_all(void);
void delete_book(void);
//save(********);
//restore(**********);
void enter(void);
private:
/*struct struc_book{
char book_name[20];
char book_auther[20];
char book_writer[20];
int books_number;
}s_book[num_book];*/
};
void lib::gotoxy ( short x, short y )
{
COORD coord = {x, y};
SetConsoleCursorPosition ( GetStdHandle ( STD_OUTPUT_HANDLE ), coord );
}
int lib::menue_select(void)
{
char s[10];
int c;
//clrscr();
gotoxy(29,6);
cout <<"(1).Entering data";
gotoxy(29,8);
cout<<"(2).Deleting data";
gotoxy(29,10);
cout<<"(3).List all data";
gotoxy(29,12);
cout<<"(4). Quit ";
do{
gotoxy(24,15);
cout<<"Please enter your choice(1-4):";
cin>>s;
c=atoi(s);
}while(c<0||c>4);
return (c);
}
void lib::enter (void)
{
int slot;
//char s[80];
slot=find_free();
if(slot==-1){
cout<<"\nList full";
return ;
}
gotoxy(5,17);
cout<<"Enter book name:";
cin>>s_book[slot].book_name;
gotoxy(40,17);
cout<<"Enter book authet:";
cin>>s_book[slot].book_auther;
gotoxy(5,19);
cout<<"Enter book writer:";
cin>>s_book[slot].book_writer;
s_book[slot].books_number=slot;
}
int lib::find_free(void)
{
register int t;
for(t=0;s_book[t].book_name[0]
&&t<num_book;++t);
if(t==num_book) return -1;
return t;
}
void lib::delete_book(void)
{
int slot;
gotoxy(28,19);
cout<<"enter record #(0-99):";
cin>>slot;
if(slot>=0&&slot<num_book)
s_book[slot].book_name[0]='\0';
}
void lib::list_all(void)
{
register int t;
int r=0;
char ch;
gotoxy(25,2);
cout<<"all information in list are:";
gotoxy(13,3);
cout<<"*************************************";
gotoxy(10,4);
cout<<"name auther writer number";
gotoxy(10,5);
cout<<" ";
for(t=0;t<num_book;++t){
if(s_book[t].book_name[0]){
gotoxy(10,6+r);
cout<<s_book[t].book_name;
gotoxy(22,6+r);
cout<<s_book[t].book_auther;
gotoxy(36,6+r);
cout<<s_book[t].book_writer;
gotoxy(50,6+r);
cout<<s_book[t].books_number;
r++;
}
}
gotoxy(13,6+r);
cout<<"*************************************";
gotoxy(27,7+r);
cout<<"press any key to continue";
getch();
}
void lib::init_list_all(void)
{
register int t;
for(t=0;t<num_book;++t)
s_book[t].book_name[0]='\0';
}
int main ( )
{
lib ketab;
char a;
for(;;){
a=ketab.menue_select();
switch(a){
case 1: ketab.enter();
break;
case 2:ketab.delete_book();
break;
case 3:ketab.list_all();
break;
case 4:exit(0);
return 0;
}
}
}

sia abedi
شنبه 28 شهریور 1388, 20:32 عصر
دوست عزيز ميشه بگيد چه اروري ميده؟

deopen
شنبه 28 شهریور 1388, 21:09 عصر
این تابع در استاندارد فعلی وجود نداره , اما کد زیر شبیه سازی شده ی همون تابع است :


#include<windows.h>
#include<iostream>
using std::cout;


void clrscr()
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {0, 0};
DWORD count;

CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hStdOut, &csbi);

FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

SetConsoleCursorPosition(hStdOut, coord);
}

int main() {

cout<<"CLRSCR";
clrscr();

system("pause");
return 0;
}

clover
شنبه 28 شهریور 1388, 22:25 عصر
شما با اضافه کردن هدر فایل stdlib و استفاده از تابع ()system می تونید دستورات خط فرمان داس را اجرا کنید .


#include <stdlib.h>

int main()
{
system("cls");

return 0;
}

راه راحت و دم دستی هست .