نمایش نتایج 1 تا 23 از 23

نام تاپیک: معادل های gotoxy و clrscr و.... در ++Visual C

  1. #1
    کاربر دائمی آواتار ICEMAN
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Hyper-V
    پست
    476

    معادل های gotoxy و clrscr و.... در ++Visual C

    توابعی که توی TC هست و رو چطور میشه توی VS استفاده کرد .
    یا معادلشون یکی از دوستان هم در مورد کاراکتر های رنگی پرسیده بود که اونم توی VS اجرا نشد

    ممنون

  2. #2
    ماهیت کنسول تحت ویندوز با برنامه های تحت Dos بسیار متفاوت است (جدا شدن گرافیک به شکل سابق از آن) و انتظار نباید داشته باشید که همه آن امکانات قدیمی (و در حال حاضر کم کاربرد و شاید هم بی کاربرد ) فراهم باشد ، در هر حال امکاناتی که ویندوز در اختیار شما قرار می دهد در فایل Wincon.h :
    لیست توابع کنسولی مایکروسافت

    ضمنا کتابخانه هایی هم (غیر استاندارد) نوشته شده اند که این کار ها را برای کنسول ویندوز انجام می دهند ، مانند کتابخانه ConLib جستجو کنید ، پیدا خواهید کرد.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486
    برای gotoxy این تابع رو به برنامه اضافه کن:

    #include <windows.h>
    void gotoxy(int x,int y)
    {
    HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );
    if (INVALID_HANDLE_VALUE != hConsole)
    {
    COORD pos = {x, y};
    SetConsoleCursorPosition( hConsole, pos );
    }
    }
    بعد هم مختصات رو بهش بده.
    برای clrscr هم هدر فایل stdlib.h رو در برنامه اضافه کن و جایی که میخوای صفحه پاک بشه این دستورو بنویس:

    system("cls");
    البته ممکنه توی لینکی که آقا نیما هم دادن موجود باشه ولی چک نکردم.
    آخرین ویرایش به وسیله emad_67 : یک شنبه 08 اردیبهشت 1387 در 11:05 صبح دلیل: اشتباه در کد

  4. #4
    سلام من از تابع gotoxy که گذاشتید استفاده کردم ولی هر بار با اینکه مقدار ورودی هاشو تغییر میدم ولی مکان نما به همون مکان اولش بر میگرده. لطفا راهنمایی کنید.


    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    #include <windows.h>
    using std::cout;
    using std::cin;
    void gotoxy(int x,int y)
    {
    HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );
    if (INVALID_HANDLE_VALUE != hConsole)
    {
    COORD pos = {10, 10};
    SetConsoleCursorPosition( hConsole, pos );
    }
    }
    void main()
    {
    int i=0,j=0;
    while(getch()!='0')
    {
    gotoxy(i,j);
    cout<<"#";
    i++;
    j++;
    }
    }
    آخرین ویرایش به وسیله Nima_NF : دوشنبه 05 فروردین 1387 در 14:01 عصر

  5. #5
    نقل قول نوشته شده توسط radium مشاهده تاپیک
    سلام من از تابع gotoxy که گذاشتید استفاده کردم ولی هر بار با اینکه مقدار ورودی هاشو تغییر میدم ولی مکان نما به همون مکان اولش بر میگرده. لطفا راهنمایی کنید.
    تابع gotoxy ذکر شده در فوق اشتباه کوچکی دارد و مقادیر x و y جایگزین نشده اند ، به این شکل استفاده کنید:

    void gotoxy(int x,int y)
    {
    COORD pos;
    HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );

    if (INVALID_HANDLE_VALUE != hConsole)
    {
    pos.X = x;
    pos.Y = y;

    SetConsoleCursorPosition( hConsole, pos );
    }
    }
    ضمنا تابع main خود را به این شکل بنویسید ، زیرا getch به صورت قبل کارکتر وارد شده را از بین می برد:

    void main()
    {
    int i=0,j=0;
    char ch;

    do
    {
    ch = getch();
    gotoxy(i,j);
    cout<<'#';
    i++;
    j++;

    } while( ch!='0' );
    }
    ضمنا دوستانی هم که علاقه مند به یادگیری API های ویندوز برای برنامه های کنسول هستند به صفحه زیر مراجعه کنند (بخش دوم) که دارای آموزش های بسیار خوبی برای پیاده سازی تمامی موارد مشابه کنسول می باشد:
    http://www.adrianxw.dk/SoftwareSite/index.html


  6. #6
    مرسی نیمای عزیز. من توی برنامم مجبور بودم مکان نما رو به جاهای مختلفی ببرم. شما کمک بزرگی به من کردید. از راهنماییتونم ممنونم.

  7. #7

    clrscr

    برای clrscr هم هدر فایل stdlib.h رو در برنامه اضافه کن و جایی که میخوای صفحه پاک بشه این دستورو بنویس:
    [code]
    system("cls");


    من از دستور بالا برای پاک کردن صفحه استفاده کردم ولی صفحه رو پاک نمیکنه.
    لطفا راهنمایی کنید. هر چی گشتم مطلبی پیدا نکردم.
    یه سوال دیگه هم دارم سورس برنامه هایی که توی محیط توربو سی نوشتم رو وقتی توی ویژوال سی پلاس پلاس کپی میکنم. این پیام خطا رو میده.
    fatal error C1010: unexpected end of file while looking for precompiled header directive
    در ضمن دستورایی مثل clrscr و غیره رو پاک کردم و مربوط به این دستورا نیست.
    دوستان لطفا راهنمایی کنید.

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486
    من از دستور بالا برای پاک کردن صفحه استفاده کردم ولی صفحه رو پاک نمیکنه.
    در صورتی که مثلا با cout یه رشته ای رو چاپ میکنی و بعد میخوای صفحه رو پاک کنی به این شکل بنویس:

    void main()
    {
    cout<<"C++‎"<<flush;
    system("cls");

    }

    یعنی بعد cout دستور flush رو بزار تا بافر خروجی خالی بشه در غیر این صورت صفحه پاک نمیشه. به جای flush میتونی از endl هم استفاده کنی فقط فرقش اینه کهendl هم بافر رو خالی میکنه و هم کرسر رو می بره خط بعد ولی در flush فقط بافر خالی میشه.

  9. #9
    کاربر دائمی آواتار ICEMAN
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Hyper-V
    پست
    476
    با دستور سsystem() وقتی کار میکنی اگه Firewall مثلا ZoneAlarm روی سیستمش نصب باشه
    پیام میده و ...
    با توابع کنسولی Microsoft نمیشه کاری کرد

  10. #10
    کاربر دائمی آواتار hoax3r
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    171
    اگه با کامپایلر Pelles C کار کرده باشین تابعی مشابه clrscr با همین نام داره که با API‌ها درست شده
    API‌ هایی که توش استفاده شده اینا هستن:


    CreateFile
    GetConsoleScreenBufferInfo
    FillConsoleOutputCharacter
    FillConsoleOutputAttribute
    SetConsoleCursorPosition


    برای اطلاعات بیشتر هم بهتره به سایت ماکروسافت مراجعه کنید

    شاد باشید

  11. #11
    void clrscr()
    {
    HANDLE hndl = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(hndl, &csbi);
    DWORD written;
    DWORD N = csbi.dwSize.X * csbi.dwCursorPosition.Y +
    csbi.dwCursorPosition.X + 1;
    COORD curhome = {0,0};
    FillConsoleOutputCharacter(hndl, ' ', N, curhome, &written);
    csbi.srWindow.Bottom -= csbi.srWindow.Top;
    csbi.srWindow.Top = 0;
    SetConsoleWindowInfo(hndl, TRUE, &csbi.srWindow);
    SetConsoleCursorPosition(hndl, curhome);
    }

    برای اینکه صفحه رو پاک کنم مجبور شدم از این تابع استفاده کنم.
    هیچ فایر والی هم روی سیستمم نصب نیست. ولی اون روشا که دوستان نوشتن جواب نداد.
    آخرین ویرایش به وسیله Nima_NF : جمعه 16 فروردین 1387 در 00:05 صبح دلیل: لطفا کدها را داخل تگ کد قرار دهید

  12. #12

    نقل قول: gotoxy()،clrscrn() و....

    دوستی درخواست کردند معادل دستور wherey و wherex برای دریافت موقعیت کنونی کرسر را نیز قرار دهم:


    #include <iostream>
    #include <windows.h>


    short Wherex()
    {
    HANDLE hStd;
    CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo;

    hStd = GetStdHandle(STD_OUTPUT_HANDLE);

    if (! GetConsoleScreenBufferInfo(hStd, &screenBufferInfo))
    printf("GetConsoleScreenBufferInfo (%d)\n", GetLastError());

    return (short)screenBufferInfo.dwCursorPosition.X;
    }

    short Wherey()
    {
    HANDLE hStd;
    CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo;

    hStd = GetStdHandle(STD_OUTPUT_HANDLE);

    if (! GetConsoleScreenBufferInfo(hStd, &screenBufferInfo))
    printf("GetConsoleScreenBufferInfo (%d)\n", GetLastError());

    return (short)screenBufferInfo.dwCursorPosition.Y;
    }
    البته پیشنهاد می شود به جای این کار یک تابع نوشته شود و دو متغیر x و y به صورت ارجاع به تابع داده شود:

    void Wherexy(short* x, short* y)
    {
    HANDLE hStd;
    CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo;

    hStd = GetStdHandle(STD_OUTPUT_HANDLE);

    if (! GetConsoleScreenBufferInfo(hStd, &screenBufferInfo))
    printf("GetConsoleScreenBufferInfo (%d)\n", GetLastError());

    *x = screenBufferInfo.dwCursorPosition.X;
    *y = screenBufferInfo.dwCursorPosition.Y;
    }
    و سپس به این شکل بخوانید:

    short x1;
    short y1;

    Wherexy(&x1, &y1);

  13. #13
    کاربر جدید
    تاریخ عضویت
    آذر 1387
    محل زندگی
    بردسكن
    سن
    35
    پست
    25

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    gotoxy


    void gotoxy(int x,int y)
    {
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_H ANDLE),coord);
    }



    clrscr


    void clrscr()
    {
    COORD coordScreen={0,0};
    DWORD cCharsWritten;
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    DWORD dwConSize;
    HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);

    GetConsoleScreenBufferInfo(hConsole,&csbi);
    dwConSize=csbi.dwSize.X * csbi.dwSize.Y;
    FillConsoleOutputCharacter(hConsole,TEXT(''),dwCon Size,coordScreen,&cCharsWritten);
    SetConsoleCursorPosition(hConsole,coordScreen);
    }

  14. #14

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    میخواستم ببینم این COORD و HANDLE چی هستند ...
    بعد کار این تابع چیه و چطوری تو این تابع استفاده میشن؟؟ SetConsoleCursorPosition

  15. #15
    کاربر دائمی آواتار Keyhan Clever
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    گرگان
    سن
    28
    پست
    134

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    دستتون درد نکنه خیلی بدرد بخوره
    میشه یکم تغییر جزیی بهش بدی و متناسب با برنامه بهترش کنی
    واقعا ممنون

  16. #16

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    سلام
    من برنامه زير رو در محيط visual C++‎‎‎ براي الگوريتم dijkstra (مسير يابي) نوشتم. اما از دستور clrsrc ايراد ميگيره و پيغام ميده : error C2065: 'clrscr' : undeclared identifier
    دستور cout<<"C++‎‎‎?"<<flush رو جيگزين clrcrs كردم و ديگه اشكال نگرفت اما برنامه درست كار نكرد.
    بار اول مسير رو درست حساب مي كنه اما دفعه هاي بعد يا جواب غلط ميشه يا اجرا نميشه!
    ممنون ميشم اگه اين برنامه رو امتحان كنيد و مشكلش رو بگيد.
    يه مثال كوچيك: تعداد نقاط 4
    تعداد يال (edge) ها 4
    بعد وارد كنيد
    1 2 10 2 4 10 1 3 10 3 4 9
    و بعد مسير مورد نظر رو بزنيد مثلا 4 1
    بعد مسير رو نشون ميده و اگر yes بزنيد و يه مسير ديگه مثل 3 1 رو بزنيد برنامه جواب نمي ده!
    آخرین ویرایش به وسیله hitman2004 : جمعه 03 اردیبهشت 1389 در 14:33 عصر

  17. #17

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    كدهاي برنامه :

    #include<stdio.h>
    #include<conio.h>
    #include<iostream.h>
    #include <conio.h>
    int g[1000][1000],visit[1000],d[1000],p[1000];
    int v,e;
    int min=100000;

    void creategraph()
    {
    int a,b,i,j,w;
    printf("Enter the number of vertices : ");
    scanf("%d",&v);
    printf("\nEnter number of edges : ");
    scanf("%d",&e);
    for(i=1;i<=v;i++)
    for(j=1;j<=v;j++)
    g[i][j]=0;
    for(i=1;i<=v;i++)
    {
    visit[i]=0;
    d[i]=min;
    }
    for(i=1;i<=e;i++)
    {
    printf("\nEnter edges and weight : ");
    scanf("%d %d %d",&a,&b,&w);
    g[a][b]=g[b][a]=w;
    }
    }

    void dijkstra()
    {
    int src,des,c,i,dc,l,x;
    printf("\nEnter source and destination : ");
    scanf("%d %d",&src,&des);
    c=src;
    d[src]=0;
    visit[src]=1;
    dc=d[c];

    while(visit[des]!=1)
    {
    for(i=1;i<=v;i++)
    {
    if(g[c][i]!=0)
    if(visit[i]==0)
    if(d[i]>g[c][i]+dc)
    {
    d[i]=g[c][i]+dc;
    p[i]=c;
    }
    }
    min=10000;
    for(i=1;i<=v;i++)
    {
    if(visit[i]==0)
    if(d[i]<min)
    {
    min=d[i];
    c=i;
    }
    }
    dc=d[c];
    visit[c]=1;
    }
    printf("\nShortest distance from %d to %d ",src, des);
    printf("%d",d[des]);
    printf("\nPath=\n");
    l=des;
    do
    {
    x=p[l];
    printf("\nVertex %d is connected to %d\n ",l,x);
    l=x;

    }while(l!=src);

    }

    void main()
    {
    char ch,ci;
    clrscr();// bejaie dastoore clrscr in dastoor ro jaigozin kardam : cout<<"C++‎‎?"<<flush;


    do
    { creategraph();

    do{
    dijkstra();
    printf("IF WANT TO CONTINUE WITH SAME DATA PRESS Y : ");
    fflush(stdin);
    scanf("%c",&ci);
    }while(ci=='y');
    printf("\nDo u wish to continue : ");
    fflush(stdin);
    scanf("%c",&ch);
    } while(ch!='n');
    }

  18. #18

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    برای clrscr میتونید از تابع زیر استفاده کنید:

    void clrscr()
    {
    system("cls");
    }

  19. #19

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    نقل قول نوشته شده توسط hitman2004 مشاهده تاپیک
    سلام
    من برنامه زير رو در محيط visual C++‎‎‎‎‎ براي الگوريتم dijkstra (مسير يابي) نوشتم. اما از دستور clrsrc ايراد ميگيره و پيغام ميده : error C2065: 'clrscr' : undeclared identifier
    دستور cout<<"C++‎‎‎‎‎?"<<flush رو جيگزين clrcrs كردم و ديگه اشكال نگرفت اما برنامه درست كار نكرد.
    بار اول مسير رو درست حساب مي كنه اما دفعه هاي بعد يا جواب غلط ميشه يا اجرا نميشه!
    ممنون ميشم اگه اين برنامه رو امتحان كنيد و مشكلش رو بگيد.
    يه مثال كوچيك: تعداد نقاط 4
    تعداد يال (edge) ها 4
    بعد وارد كنيد
    1 2 10 2 4 10 1 3 10 3 4 9
    و بعد مسير مورد نظر رو بزنيد مثلا 4 1
    بعد مسير رو نشون ميده و اگر yes بزنيد و يه مسير ديگه مثل 3 1 رو بزنيد برنامه جواب نمي ده!
    خب لابد تابع clrscr رو اول برنامه تعریف نکردی، اگه تعریفش بکنی مشکلت حل میشه. برنامه ای که نوشتی نفهمیدم میخواد چی کار بکنه؟ اگه توضیح بیشتری بدی شاید بتونم کمکت کنم

  20. #20

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    سلام من با microsoft visual studio کار می کنم چطور می شه توی این این برنامه کار گرافیکی کرد .

  21. #21

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    سلام کسی میدونه معادل graphics.h در ++visual c چیه؟

  22. #22

    یه دنیا ممنون

    خدا خاندانت رو رحمت بکنه
    هی میگم چرا این برنامه کامپایل نمیشه
    دهنم سرویس شده بود

  23. #23

    نقل قول: معادل های gotoxy و clrscr و.... در ++Visual C

    [QUOTE=ICEMAN;455294]توابعی که توی TC هست و رو چطور میشه توی VS استفاده کرد .
    یا معادلشون یکی از دوستان هم در مورد کاراکتر های رنگی پرسیده بود که اونم توی VS اجرا نشد

    تا جایی که من میدونم راهای زیادی هست یکیش اینه
    برای gotoxy
    printf("\x1b[5;20H");
    که 5 میبره خط پنج و 20 هم x هست
    برای تغییر رنگ هم بجای 5 شماره رنگو بنویسید مثلا فک کنم 32 زرده بجای h هم m بنویسید اگه خواستید پس زمینه هم داشته باشید بجای 20 چهل استفاده کنید که مشکیه

تاپیک های مشابه

  1. همانند gotoxy
    نوشته شده توسط هانی هاشمی در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: یک شنبه 14 مرداد 1386, 18:11 عصر
  2. معادل دستور gotoxy(i,j) چیست
    نوشته شده توسط ameysams در بخش VB.NET
    پاسخ: 1
    آخرین پست: پنج شنبه 30 آذر 1385, 10:43 صبح
  3. معادل gotoxy چییه
    نوشته شده توسط pvza85 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: چهارشنبه 30 فروردین 1385, 20:46 عصر
  4. ++gotoxy(x,y) in C
    نوشته شده توسط mustang در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: یک شنبه 28 اسفند 1384, 12:59 عصر
  5. Y در تابع GOTOXY
    نوشته شده توسط saeedIRHA در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: سه شنبه 04 بهمن 1384, 22:12 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •