28-02-2010, 01:27 AM
|
#3
|
تاريخ التسجيل: Jul 2008
كلية: كلية الحاسبات وتقنية المعلومات
التخصص: IT
نوع الدراسة: عضو هيئة تدريس
المستوى: متخرج
البلد: جــــدة
الجنس: ذكر
المشاركات: 2,477
|
رد: مساعدة في كتابة برنامج تحويل من الهكساديسمل الى ديسمل ..!
وعليكم السلام ورحمة الله وبركاته .
تفضل :

كود PHP:
#include<stdio.h>
#include <math.h>
#define SIZE 1000 // الحجم
//وظيفة إدخال الحروف إلى المصفوفة
void Input(char *txt,int size);
//وظيفة إسناد جميع عناصر المصفوفة بقيمة ابتدائية مهملة
void Rest(char *txt, int size);
// وظيفة عكس عناصر المصفوفة
void Reverse(char *txt, int size);
//أخذ قيمة الديسمل المقابل للهيكساديسمل
int get_DEC_from_HEX(char c);
// التحويل من هيكساديسمل إلى ديسمل
long HEX_To_DEC(char *txt, int size);
int main()
{
char hex[SIZE];
printf("\n------------------------------------------------\n");
printf(":: Hexadecimal To Decimal Converter ::\n\t\tBy Mr.Ahmad\n");
printf("------------------------------------------------\n");
for (;;)
{
Rest(hex, SIZE);
printf("Hexadecimal : ");
Input(hex,SIZE);
Reverse(hex,SIZE);
printf("Decimal : ");
printf("%ld\n",HEX_To_DEC(hex, SIZE));
printf("\a\n");
}
return 0;
}
void Input(char *txt,int size)
{
int i = 0;
char c;
scanf("%c",&c);
*txt = c;
txt++;
while ( c != '\n')
{
if ( i < size)
{
scanf("%c",&c);
*txt = c;
i++;
txt++;
}
else
{
break;
}
}
}
void Rest(char *txt, int size)
{
int i;
for (i=0 ; i<size; i++)
{
txt[i] = '?';
}
}
void Reverse(char *txt, int size)
{
int i,j,temp;
for (i=0,j=(size-1); i<(size/2); i++,j--)
{
temp = ('?' == txt[i] || '\n' == txt[i] ) ? '?' : txt[i];
txt[i] = ('?' == txt[j] || '\n' == txt[j]) ? '?' : txt[j];
txt[j] = temp;
}
}
int get_DEC_from_HEX(char c)
{
int value;
switch (c)
{
case '0': value = 0; break;
case '1': value = 1; break;
case '2': value = 2; break;
case '3': value = 3; break;
case '4': value = 4; break;
case '5': value = 5; break;
case '6': value = 6; break;
case '7': value = 7; break;
case '8': value = 8; break;
case '9': value = 9; break;
case 'A': case 'a' : value = 10; break;
case 'B': case 'b' : value = 11; break;
case 'C': case 'c' : value = 12; break;
case 'D': case 'd' : value = 13; break;
case 'E': case 'e' : value = 14; break;
case 'F': case 'f' : value = 15; break;
default: value = 0;
}
return value;
}
long HEX_To_DEC(char *txt, int size)
{
long long total = 0;
int i,place = 0;
for (i= 0; i < size; i++)
{
if (*txt != '?')
{
total += (get_DEC_from_HEX(*txt) * pow(16.0,place));
place++;
}
txt++;
}
return total;
}
تجربة البرنامج : (ملاحظة : الرقم الذي أنت وضعته في الموضوع كبير جداً سيظهر Overflow عند محاولتك تحويله ) :

بالتوفيق .
|
|
سبحان الله وبحمد ,,, سبحان الله العظيم الحمد لله كما ينبغي لجلال وجهه وعظيم سلطانه . اللهم صل على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد . اللهم بارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد.
|
التعديل الأخير تم بواسطة Mr.Ahmad ; 28-02-2010 الساعة 01:32 AM.
|
|
|