انتقال مکان نما در صفحه خروجی

گاهی ممکن است بخواهید مکان نما را در صفحه خروجی به محل خاصی منتقل کنید و اطلاعات را از آنجا دریافت و یا چاپ کنید برای این منظور از تابع gotoxy() استفاده می کنیم که در فایل conio.h قرار دارد و به صورت زیر است

Gotoxy(int x , int y);

کهx  شماره ستون و y شماره سطر می باشد .

 

چاپ اعداد نوع short و long

برای چاپ اطلاعات عددی از نوع long و short از کاراکترهای خاصی استفاده می شود کاراکتر L به همراه d برای چاپ مقادیر long و کاراکتر h به همراه d برای چاپ مقادیر short به کار می رود البته شکلهای دیگری هم داره ولی همین بسه .

 >>>>>

 

انتقال مکان نما در صفحه خروجی

گاهی ممکن است بخواهید مکان نما را در صفحه خروجی به محل خاصی منتقل کنید و اطلاعات را از آنجا دریافت و یا چاپ کنید برای این منظور از تابع gotoxy() استفاده می کنیم که در فایل conio.h قرار دارد و به صورت زیر است

Gotoxy(int x , int y);

کهx  شماره ستون و y شماره سطر می باشد .

 

چاپ اعداد نوع short و long

برای چاپ اطلاعات عددی از نوع long و short از کاراکترهای خاصی استفاده می شود کاراکتر L به همراه d برای چاپ مقادیر long و کاراکتر h به همراه d برای چاپ مقادیر short به کار می رود البته شکلهای دیگری هم داره ولی همین بسه .

 

مثال :

#include <conio.h>

#include <stdio.h>

int main()

{

            short int x = 15 ;

            long int m = 35789 ;

            clrscr() ;

            gotoxy(20,10) ;

            printf("\n x=%hd, m=%ld",x,m) ;

            getch() ;

            return 0 ;

}

تعیین طول میدان در تابع Printf()

با استفاده از امکانات دیگری که در تابع printf() وجود دارد ، می توان مشخص کرد که هر کدام از اطلاعاتی که به خروجی می رود چند بایتاز فضای خروجی را اشغال کنند . فضایی را که هر قلم اطلاعات اشغال می کند طول میدان خروجی می گویند .

طول میدان مقادیر صحیح به صورت %wd است که w طول میدان می باشد اگر طول میدان بیشتر از تعداد ارقام باشد عدد در سمت راست میدان قرار می گیرد و سمت چپ آن خالی می ماند و اگر طول میدان کمتر از تعداد ارقام باشد طول میدان نادیده گرفته می شود و تمام ارقام به خروج می رود .

طول مقادیر اعشاری به صورت %w.df است که در آن w طول کل میدان و d تعداد ارقام اعشار و البته نقطه هم یکی از تعداد طول میدن است . اگر تعداد ارقام اعشار از طول میدان اعشار بیشتر باشد قسمت اعشار گرد می شود یعنی اگر بزرگتر از 5 باشد یک رقم به قسمت اعشار اضافه می شود و اگر کمتر باشد رقم حذف می شود .

 

مثال :

#include <stdio.h>

#include <conio.h>

int main()

{

        int x = 125 , y = 1468 ;

        float m = 327.348, n = 4351.32 ;

         clrscr() ;

        printf(“x = %5d, y = %3d, sum = %d”,x,y,x+y) ;

        printf(“\n m = %7.2f, n = %6.2f”,m,n) ;

        printf(“\n%5.10s”,”this is a sample output.”) ;

        getch() ;

        return 0 ;

}

اگه خودتون این مثال و تست کنید بهتر می فهمید چه اتفاقی می افته .

اگر برای چاپ یک عدد صحیح ، از طول میدانی به شکل %w.dd استفاده شود ، d حداقل طول میدان را مشخص می کند . اگر طول میدان رشته ها به صورت %w.ds باشد ، w حداقل طول میدان و d حداکثر کاراکترهای قابل چاپ را مشخص می کند .

 

 

ورود اطلاعات توسط تابع scanf()

این تابع برای ورود اطلاعات از صفحه کلید مورد استفاده قرار می گیرد و یک تابع همه منظوره در ورود داده ها است .

الگوی این تابع در فایل stdio.h قرار دارد .این تابع ، تمام انواع داده ها را می تواند از ورودی بخواند و آنها را در حافظه ذخیره نماید . اگر این تابع با موفقیت اجرا شود ، تعداد متغیرهایی را که از ورودی خوانده است برمی گرداند و در صورت بروز خطا ، EOF توسط تابع برگردانده می شود . EOF مقداری است که بیانگر عدم اجرای صحیح تابع scanf() است . این تابع به صورت زیر به کار می رود :

 ;(< عبارت 2 > , "< عبارت 1 >" scanf

<عبارت 2> آدرس متغیرهایی است که باید از ورودی خوانده شوند و <عبارت 1> مشخص می کند که مقادیر ورودی چگونه باید خوانده شوند و در متغیرهایی که آدرس آنها در <عبارت 2> مشخص شده است قرار گیرند <عبارت 1> شامل سه نوع کاراکتر است :

1. کاراکترهای فرمت : این کاراکترها مشخص می کنند که چه نوع اطلاعاتی باید از ورودی خوانده شوند و با % شروع می شوند .

کاراکتر       اطلاعاتی که خوانده می شوند  

%c               یک کاراکتر           

%d               اعداد صحیح دهدهی

%f                اعداد اعشاری ممیز شناور

%s               رشته ها  

%p               یک اشاره گر

%n               مشخص کننده تعداد کاراکترهایی است که تا %n از ورودی خوانده شده اند

 

2. کاراکترهای فضای خالی : وجود فضای خالی در <عبارت 1> موجب می شود تا تابع scanf() از فضای خالی موجود در ابتدای اطلاعات ورودی صرفنظر کند . کاراکتر های جدول بندی (tap) ، خط جدید (new line) و رد کننده صفحه (form feed) نیز به عنوان فضای خالی محسوب می شوند .

 

3. کاراکترهای غیر از فضای خالی و فرمت : وجود چنین کاراکتری موجب می شود تا چنانچه همان کاراکتر در رشته ورودی و جود داشته باشد ، آن را خوانده از آن صرفنظر کند . به عنوان مثال ، “%d,%d” موجب می شود تا یک عدد صحیح خوانده شود ، سپس یک کاما خوانده و از آن صرفنظر شود و سپس عدد صحیح دیگری خوانده شود . اگر کاراکتر مشخص شده در <عبارت 1> در رشته ورودی وجود نداشته باشد ، تابع scanf() خاتمه می یابد . برای خواندن و سپس صرفنظر از علامت % باید %% را در <عبارت 1> به کار برد .

 

وقتی دستور scanf() اجرا می شود ، منتظر می ماند تا داده ها را از صفحه کلید دریافت نماید . هنگام وارد کردن داده ها ، هر یک از اقلام داده را با یک فاصله یا کاما از هم جدا کنید و پس از ورود داده ها ، کلید Enter را فشار دهید .

 

مثال :

#include <stdio.h>

#include <conio.h>

int main()

{

int x , y , area , p ;     

clrscr() ;     

printf(“Enter length and width :”) ;     

scanf(“%d%d”, &x , &y) ;     

area = x * y ;     

p = (x + y) * 2 ;     

printf(“ Area = %d, p = %d”, area , p) ;     

getch() ;     

return 0 ;     

}

ورودی برنامه ، طول و عرض مستطیل اند که آنها را به ترتیب در x و y قرار می دهد .

عرض * طول = مساحت مستطیل ß  که مقدار به دست آمده در متغیر area ذخیره می شود

2 * (عرض + طول ) = محیط مستطیل ß  که مقدار به دست آمده در متغیر p ذخیره می شود

و حاصل توسط تابع  printf() چاپ می شود .

 

 

مثال :

#include <stdio.h>

#include <conio.h>

int main()

{

int x , y , n ;      

float ave ;      

clrscr() ;      

printf(“\nEnter three integers :”) ;     

scanf(“%d%d%d”, &x , &y , &n) ;     

ave = (float)( x + y + n) / 3 ;     

printf(\nave = %6.2f” , ave) ;     

getch() ;     

return 0 ;     

}

این مثال سه عدد از ورودی دریافت می کند و میانگین آنها را حساب می کند .

چون هر سه عدد از نوع صحیح هستند ، مجوع آنها نیز صحیح خواهد بود . پس از تقسیم شده مجموع بر عدد 3 حاصل نیز صحیح خواهد شد یعنی تقسیم یه صورت صحیح انجام می شود در حالی که انتظار داریم تقسیم به صورت اعشاری انجام شود و میانگین اعشاری چاپ شود . برای این منظور باید تبدیل نوع صورت گیرد . چون می خواهیم تقسیم به صورت اعشاری باشد ، قیل از تقسیم ، نوع اعشاری ، یعنی float را دز داخل پرانتز قرار می دهیم . این روش تبدیل نوع را type casting گویند .

 

مثال :

#include <conio.h>

#include <stdio.h>

int main()

{

int x , y ;       

clrscr() ;       

printf(“\n Enter two integers :”) ;       

scanf(“%d%d”, &x , &y) ;       

printf(“\n before change : x = %d , y = %d”,x , y) ;       

x += y ;       

y = x – y ;       

x -= y ;       

printf(“\n after change : x = %d , y = %d”, x , y) ;       

getch() ;       

return 0 ;