PDA

View Full Version : سوال: ویرایش متن



Marzieh309
چهارشنبه 22 اردیبهشت 1389, 22:08 عصر
با سلام. من می خوام یک برنامه بنویسم که یک متن دریافت کند و با گرفتن تعداد سطر و ستون از کاربر, متن را در تعداد ستون و سطر تعیین شده نشان دهد؛ یعنی متن را به صورت ستونی مثل متن های روزنامه نشان دهد. اما نمی دونم چه جوری می شود این کار را انجام داد

tdkhakpur
چهارشنبه 22 اردیبهشت 1389, 22:20 عصر
کدام حالت از صفحه نمایش مد متن یا گرافیک؟

saber187518
چهارشنبه 22 اردیبهشت 1389, 23:04 عصر
برای اینکه بتونید این برنامه رو انجام بدید باید متن رو کاراکتر به کاراکتر به تعداد ستونهای درخواستی چاپ کنی. و برای اینکه بتونی در ستون دوم روزنامه بنویسی باید از دستور gotoxy استفاده کنی و در ادامه متن ستون دوم رو چاپ کنی.
امیدوارم اینطوری بتونی انجام بدی.

Marzieh309
پنج شنبه 23 اردیبهشت 1389, 08:52 صبح
کدام حالت از صفحه نمایش مد متن یا گرافیک؟

صفحه نمایش در مد متن

tdkhakpur
پنج شنبه 23 اردیبهشت 1389, 14:37 عصر
با جهت نما ها میتوانید اندازه کادرتان را افزایش یا کاهش بدید ESC خروج


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
//---------------------------------------------------------------------------
char *GetSentex(char *Text, int MaxCol)
{
char tmp[126]={0};
int c=0, c2;
while( Text[c]!= 0 ){
tmp[c] = Text[C++‎];
if( c>MaxCol ){
while( tmp[--c]!=' ' && c>0 );
break;
}
}
tmp[c] = 0;
return tmp;
}
void SetToPage(char *Text, int x, int y, int MaxCol, int MaxRow)
{
char tmp[126]={0};
int c =0, emtys, c_row=0;
while( c<strlen(Text) && c_row<MaxRow){
gotoxy(x, y+c_row);
strcpy(tmp, GetSentex(&Text[c], MaxCol));
emtys = 0;
while(tmp[emtys]==' ' && emtys<strlen(tmp)) emtys++;
printf("%s", &tmp[emtys]);
c += strlen(&tmp[emtys]);
c_row ++;
}
}
int main(int argc, char* argv[])
{
char *Text = {"hi, i'm magazine managet tdkhakpur my friend how are you ."};
char tmp[126];
char key=0;
int col=10, row=5, x=30, y=10;
while( key!=27 ){
clrscr();
printf("\n press ESC to exit, up-down-left-right arrow to resize magazine...");
//draw panel
gotoxy(x-1, y-1);
printf("|");
for(int j=0; j<col+1; j++)
printf("-");
printf("|");
for(int i=0; i<row+1; i++){
gotoxy(x-1, y-1+i);
printf("|");
gotoxy(x+1+col, y-1+i);
printf("|");
}
gotoxy(x-1, y+row);
printf("|");
for(int j=0; j<col+1; j++)
printf("-");
printf("|");

strcpy(tmp, GetSentex(Text, 21));
SetToPage(Text, x, y, col, row);
key = getch();
if( key==0 )
switch(getch()){
case 72: row = row>0 ? row-1 : 0 ; break; // up
case 77: col = col<(79-x) ? col+1 : 79-x; break; // right
case 80: row = row<(24-y) ? row+1 : 24-y; break; // down
case 75: col = col>0 ? col-1 : 0 ; break; // left
}
}
return 0;
}