انتخاب متغیر در سی پلاس - برای اعداد بزرگتر از 65535

0098

New Member
میزان حقوق و درصد افزوده

سلام دوستان
من این برنامه رو نوشتم که میزان حقوق و درصد افزوده رو در سال حساب می کنه

ولی مشکلم اینه که در خروجی اگه رقم با لاتر از 65535 با شه دیگه قاطی می کنه
متغیر ها رو هم از نوع
[FONT=&quot]unsigned int تعریف کردم ولی مشکلم حل نشده
مثلا اگه میزان حقوق 5000 ودر صد افزوده 3 باشه خروجی رو درست میده بیرون 61800
اگه میزان حقوق 6000 و در صد افزوده رو 3 در نظر بگیریم اونوقت خروجی رو غلط نشون می ده
ممنون می شم اگه دوستان کمک کنند

[/FONT]

#include<conio.h>
#include<stdio.h>

//

int main()

{
const unsigned int sade=100,sale=12;
unsigned int hoghogh,hoghoghe,jame;
unsigned int darsad;
clrscr();
printf("mizan hoghogh v darsad afzode ra vared konid");
scanf("%u%u",&hoghogh,&darsad);
hoghoghe=hoghogh;
hoghogh=hoghogh/sade;
hoghogh=hoghogh*darsad;
hoghogh=hoghogh+hoghoghe;
hoghogh=hoghogh*sale;
jame=hoghogh;
printf("jame=%u",jame);
getch();
return 0;
}
 
آخرین ویرایش:

the_king

مدیرکل انجمن
استفاده کردن از unsigned مشکل رو حل نمی کنه، محدوده اعداد 16 بیتی با علامت (signed) از 32768- الی 32767 است
و محدوده اعداد 16 بیتی بدون علامت از 0 الی 65535 یا به عبارتی دو برابر در بازه اعداد بزرگتر از صفر.

بجای استفاده از اعداد 16 بیتی int از اعداد 32 بیتی long استفاده کنید که long int هم نوشته می شود.
موقعی که یک عدد long int را از ورودی می خوانید یا در آن می نویسید، بجای d% از ld% استفاده کنید.
آن l مابین % و d حرف اول Long است و نشان می دهد که قراره یک عدد صحیح با طول بزرگتر از short int دریافت شود.

همچنین توصیه می کنم که مقدار هر متغیری را در یک سطر جداگانه دریافت کنید.

کد:
#include <conio.h>
#include <stdio.h>

int main()
{
	const [B]long int[/B] sade=100, sale=12;
	[B]long int[/B] hoghogh, hoghoghe, jame, darsad;
	clrscr();
	printf("mizan hoghogh v darsad afzode ra vared konid\n");
	printf("hoghogh       = ");
	scanf("[B]%ld[/B]",&hoghogh);
	printf("darsad afzode = ");
	scanf("[B]%ld[/B]",&darsad);
	hoghoghe=hoghogh;
	hoghogh=hoghogh/sade;
	hoghogh=hoghogh*darsad;
	hoghogh=hoghogh+hoghoghe;
	hoghogh=hoghogh*sale;
	jame=hoghogh;
	printf("jame = [B]%ld[/B]",jame);
	getch();
	return 0;
}
 

جدیدترین ارسال ها

بالا