PDA

View Full Version : گفتگو: تغيير يك كد c++



metalica
پنج شنبه 06 خرداد 1389, 14:53 عصر
سلام دوستان .
من قطعه كديو دارم كه حروف انگليسي را از ورودي ميگيره و در خروجي به شكل ستاره چاپ مي كنه . مشكلم اينجاست كه حروف زير هم چاپ ميشن ولي من ميخوام توي يك سطر چاپ شند مثلا ورودي ali را بگيرد و خروجي حروف a,l,i را به شكل ستاره ولي در يك سطر چاپ كند . اگر كسي اطلاعي داره كمك كنه ممنون ميشم .
:ناراحت::ناراحت::ناراحت::متف ر::متفکر::متفکر:

saber187518
پنج شنبه 06 خرداد 1389, 18:08 عصر
با سلام
دوست عزیز از gotoxy استفاده کن.
وقتی شما یک حرف رو چاپ می کنی برای اینکه حرف بعدی رو چاپ کنی باید با gotoxy بری به مثلا یک ستون بعد از حرف قبلی و اراونجا کارتو برای چاپ کاراکتر بعدی شروع کنی.
موفق باشی

saber187518
جمعه 07 خرداد 1389, 23:56 عصر
با سلام
این هم یک مثال


#include <conio.h>

int main(void)
{
clrscr();
gotoxy(35, 12);
cprintf("Hello world");
getch();
return 0;
}

metalica
شنبه 08 خرداد 1389, 08:07 صبح
سلام من مثاليو كه زدين تو كامپايلر c++2009 وارد كردم اما دستوراي clrscr(); و gotoxy(35, 12); را نميشناسه و پيغام زيرو ميده :
error C3861: 'clrscr': identifier not found
error C3861: 'gotoxy': identifier not found
اگه ميتونيد راهنماييم كنيد چه طور استفاده كنم ؟ ممنون
:افسرده::افسرده::ناراحت::نار حت:

metalica
شنبه 08 خرداد 1389, 08:16 صبح
سلام من براي چاپ حروف به شكل ستاره كدي را نوشته ام و اجرا هم ميده ولي ميخواستم اگه كسي يه نظر بهتري داره ارائه كنه چون برنامه ام خيلي طولاني شده و به نظرم بهينه نيست . قسمتيشو ميزارم اگه نطري داشتين بدين ممنون ميشم .
فايل ضميمه رو بينيد .:خجالت::خجالت::خجالت::ناراحت ::ناراحت::ناراحت:

ztx4
شنبه 08 خرداد 1389, 08:33 صبح
من فایل شمارو دانلود کردم.
متاسفانه فایل شما در فرمت doc بود و من office نداشتم که فایل شما رو ببینم.

یادتون باشه همیشه برنامه ها تون رو با فرمت txt یا فرمت اصلی کد مثلCpp در سایت قرار بدیدو

ztx4
شنبه 08 خرداد 1389, 08:34 صبح
نه صبر کن.
تونستم با google doc بازش کنم.

ztx4
شنبه 08 خرداد 1389, 08:43 صبح
خوب دوست گرامی کد شما به درستی کار می کنه.
از نظر بزرگی هم نگران نباشید نمی شه از این که هست بیشتر کد رو خلاصه تر کرد.
ضمنا بهینه بودن یک برنامه ربطی به تعداد خط هاش نداره و بهینه بودن یعنی کمترین استفاده از cpu , حافظه

چند تا نکته در مورد این برنامه دیدم که لازم می دونم عرض کنم:
1- برنامه ی شما بعد از اجرا به طور خود کار بسته می شه.
2-حروف کوچک در برنامه پیش بینی نشده اند.
3- برنامه فقط قابلیت چاپ یک حرف را داره یعنی نوشتن کلمه در برنامه پشتیبانی نمی شه.

metalica
شنبه 08 خرداد 1389, 19:48 عصر
سلام . مرسي از اينكه نظر دادين . ميشه در مورد اينكه برنامه رو چه طوري تغيير بدم تا كلمه رو در يك سطر چاپ كنه راهنماييم كنيد يا يك تكه از كدشو واسم بزارين . در ضمن برنامه ام كامل همه حروفو چاپ ميكنه و حتي اسم رو هم مثل ali چاپ ميكنه ولي زير هم نه در يك سطر اگه ممكنه مشكلمو راهنمايي كنيد ممنون ميشم .:خجالت::متفکر::ناراحت::افسرد ه:

metalica
یک شنبه 09 خرداد 1389, 09:32 صبح
سلام به دوستان پركار . يعني هيچ كسي بلد نيست اين برنامه رو كه ميگين ساده و ابتداييه رو راهنمايي كنه .:ناراحت::افسرده::متعجب::متعج ب::متعجب:

ztx4
یک شنبه 09 خرداد 1389, 10:51 صبح
سلام به دوستان پركار . يعني هيچ كسي بلد نيست اين برنامه رو كه ميگين ساده و ابتداييه رو راهنمايي كنه .:ناراحت::افسرده::متعجب::متعج ب::متعجب:

دوستان جواب شمارو دادند.از gotoxy استفاده کنید.

ztx4
دوشنبه 10 خرداد 1389, 00:00 صبح
دوست عزیز منظور بدی نداشتم.از یک جای دیگه ای ناراحت بودم،پست شمارو که دیدم واکنشی تند نشون دادم.شرمنده،حلال کنید.

من C++‎ 2009 ندارم که بخوام راهنمایی کنم.اما اگر از Borland C++‎5.02 ستفاده کنید مطمئنا جوب می گیرید.



من پست قبلیم رو جهت جبران مافات اصلاح می کنم.

این پست هم اصلاح شد.

ztx4
دوشنبه 10 خرداد 1389, 00:07 صبح
حالا يه دكمه تشكر نزدن دليل بر تشكر نكردن يا بي احترامي نيست .
راستی یک چیزی رو یادم رفت.طبق عرف انجمن ها و تالار های گفتگو تشکر زبانی صورت نمی گیره و تشکر با زدن دکمه ی تشکر انجام می شه.البته هیچ جا اجباری به این کار نیست.

metalica
دوشنبه 10 خرداد 1389, 08:25 صبح
سلام دوست عزيز . ممنون از راهنماييتون . اگه برنامه ي ضميمه ام رو ديدين ميتونيد بگيد كه اين كد را براي اون ميشه استفاده كرد يا نه ؟ ممنون ميشم:خجالت:

metalica
سه شنبه 11 خرداد 1389, 08:15 صبح
سلام . اين قطعه كدي كه دوست عزيز negative_se7en گذاشتن تو c++2009 چه طوريه چون من با visual c++ كار نميكنم اما احتمالا دستوراش فرق ميكنه تو c++ اگه كسي ميتونه راهنمايي كنه تو C++ چه طوريه كدش . ممنون ميشم:متفکر:

metalica
سه شنبه 11 خرداد 1389, 19:27 عصر
سلام من از كامپايلري به اسم( ++dev ‍c) استفاده ميكردم البته امروز Microsoft Visual C++ 2009 Express Edition رو گير آوردم اما كدي كه دادين رو بهش error ميده . اگه ممكنه راهنمايي كنين ممنون ميشم .

metalica
چهارشنبه 12 خرداد 1389, 14:48 عصر
سلام دوست عزيز من كد رو توي Microsoft Visual C++‎‎‎ 2009 Express Edition امتحان كردم error نداد ولي مشكلي كه دارم توي main برنامه نميدونم چه طوري ازش استفاده كنم . براي اينكه بهتر منظورمو بفهميد تكه اي از كدمو گذاشتم كه تابعي كه واسم گذاشتيد رو هم توشه اگه امكانش هست برنامه رو ببينيد و در مورد استفاده ي تابه توي mainراهنماييم كنيد . ممنون ميشم از اينكه وقت ميزارين .

metalica
چهارشنبه 12 خرداد 1389, 15:29 عصر
دوستان توجه داشته باشين كه ميخوام حروف به شكل اسم چاپ شن يعني توي يك سطر كنار هم .:چشمک:

metalica
چهارشنبه 12 خرداد 1389, 16:34 عصر
دوست عزيز اون قسمت مربوط به حرف c درست بوده من برنامه ام رو همشو تو فايل ضميمه ام قرار نداده بودم . در كل برنامه براي كل حروفه و من قسمتيشو واستون قرار دادم . و خواسته بودم در مورد جايي كه توي بدنه ي برنامه ميتونم از دستورmy_gotoxy() استفاده كنم راهنماييم كنيد . توي main كجاش از دستور نام برده استفاده كنم كه حروفم زير هم يا روي هم چاپ نشند و كنار هم چاپ شند . شرمنده منظورمو بد رسوندم و خيلي سوال ميكنم .:ناراحت::ناراحت::ناراحت:

metalica
چهارشنبه 12 خرداد 1389, 16:37 عصر
من قسمتي از كدو كه توش مشكل دارم گذاشتم اگه ميتونيد اصلاحش كنيد :


int main(void )
{
char name;
cout<<"PLZ enter name :";
cin>>name;
switch (name)
{

case'A':
PrintChar_A(character_A);
my_gotoxy(?,?);
break;
case'B':
PrintChar_B(character_B);
my_gotoxy(?,?);
break;

خطيو كه رنگي كردم توش مشكل دارم كه چي جاي علامت «؟» بزارم و يا اصلا جايي كه از اين دستور استفاده كردم درسته يا نه . ممنون ميشم اگه راهنماييم كنيد .

metalica
پنج شنبه 13 خرداد 1389, 08:33 صبح
راستي ممنون از قسمتي كه واسم اصلاحش كردين راستش نميدونم چرا بهش توجه نكرده بودم كه تابع ها كارشون يكيه به هرحال بازم ممنون:لبخند:

metalica
شنبه 15 خرداد 1389, 11:10 صبح
سلام . دوستان كسي هست بتونه راهنمايي كنه تو كد زير مقدار xy را چي قرار بدم تا حروف كنار هم چاپ شن ؟


void my_gotoxy (int x,int y)
{
HANDLE console = GetStdHandle (STD_OUTPUT_HANDLE);
COORD xy = {x,y};
SetConsoleCursorPosition(console,xy);
}
int main(void )
{
char name;
cout<<"PLZ enter name :";
cin>>name;
switch (name)
{

case'A':
PrintChar_A(character_A);
my_gotoxy(x,y);
break;
case'B':
PrintChar_B(character_B);
my_gotoxy(x,y);
break;
اگه راهنمايي كنيد ممنون ميشم .:ناراحت::ناراحت::ناراحت::نار احت::ناراحت::گریه::گریه::گریه ::افسرده::افسرده::افسرده:

ztx4
شنبه 15 خرداد 1389, 11:21 صبح
دوست گرامی
در خط فرمان هر خط یک شماره داره که اون شماره در y قرار می گیره و x شماره کاراکتر در اون خط!
البته با این برنامه ای که نوشتید به خاطر شکل آرایه ها، پیاده سازی Gotoxy کمی پیچیده می شه!

metalica
یک شنبه 16 خرداد 1389, 18:56 عصر
سلام دوست عزيز . اميد وارم تو امتحاناتت موفق باشي . چشم دعا هم ميكنيم واسه موفقيتتون . :لبخند:

ztx4
یک شنبه 16 خرداد 1389, 22:57 عصر
سلام دوست عزيز . اميد وارم تو امتحاناتت موفق باشي . چشم دعا هم ميكنيم واسه موفقيتتون . :لبخند:

ممنونم.
شما هم موفق باشید:قلب:

HH2BN1990
دوشنبه 14 تیر 1389, 11:04 صبح
برای x و y می تونید از این فرمول استفاده کنید.
x = (i*8)+1;
y = 5;
که y اون مهم نیست می تونید هر عددی بزارید و x اون به اینصورت که به جای i عددی رو که نشون میده این کارکتر چندمین حروف هستش رو بزارین(دقت کنید که i از صفر شروع میشه)
مثلا برای کارکتر اولی 0 برای دومی 1 و الی آخر...

metalica
دوشنبه 14 تیر 1389, 14:02 عصر
سلام ممنون از راهنماييتون ، من كد رو اصلاح كردم ولي نميدونم درسته يا نه !


void my_gotoxy (int x,int y)
{
HANDLE console = GetStdHandle (STD_OUTPUT_HANDLE);
COORD xy = {x,y};
SetConsoleCursorPosition(console,xy);
}
int main(void )
{
char name;
int x,y,i;
cout<<"PLZ enter name :";
cin>>name;
for(i=0;i<52;i++);
x = (i*8)+1;
y=5;
switch (name)
{
case'A':
my_gotoxy(x,y);
PrintChar_A(character_A);
break;
case'B':
my_gotoxy(x,y);
PrintChar_B(character_B);
break;
}
}

HH2BN1990
سه شنبه 15 تیر 1389, 20:31 عصر
void gotoxy( int column, int line )
{
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition(
GetStdHandle( STD_OUTPUT_HANDLE ),coord);
}
void PrintCharacter(int *chptr,int x, int y)
{
for( int j=0; j<8; j++)
{
gotoxy(x,y);
for( int i=0; i<8; i++)
if(chptr[j*8+i])
cout<<"*";
else
cout<<" ";
y++;
}
}

void main()
{
string charname = " ";
int x,y;
cout<<"PLEASE ENTER YOUR FAVORITE CHARACTER:"<<endl;
cin >> charname;

system("cls");
for(int i=0;charname[i] != '\0' ;i++)
{
x = (i*8)+1;
y = 5;
switch (charname[i])
{
case 'A':PrintCharacter(character_A,x,y);break;
case 'B':PrintCharacter(character_B,x,y);break;
}
}
getch();
}

اگه قراره یه کاراکتر بگیرید (چون name رو از نوع char تعریف کردین) حلقه ی for اضافی هستش ولی اگه قراره یه string بگیرید باید switch رو هم داخل حلقه قرار بدید { } for
و اینکه داخل توابع PrintChar یه حلقه دارید که باید gotoxy رو داخل اون حلقه بزارید چون با هر خطی که چاپ میشه و تموم میشه برای رفتن به خط بعد دوباره باید gotoxy رو صدا بزنیم