عرض مشاركة واحدة
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 28-02-2010, 01:27 AM   #3

Mr.Ahmad

عضو هيئة تدريس

الصورة الرمزية Mr.Ahmad

 
تاريخ التسجيل: Jul 2008
كلية: كلية الحاسبات وتقنية المعلومات
التخصص: IT
نوع الدراسة: عضو هيئة تدريس
المستوى: متخرج
البلد: جــــدة
الجنس: ذكر
المشاركات: 2,477
افتراضي رد: مساعدة في كتابة برنامج تحويل من الهكساديسمل الى ديسمل ..!

وعليكم السلام ورحمة الله وبركاته .

تفضل :



كود PHP:
#include<stdio.h> 
#include <math.h>
#define SIZE 1000 // الحجم

//وظيفة إدخال الحروف إلى المصفوفة
void Input(char *txt,int size);
//وظيفة إسناد جميع عناصر المصفوفة بقيمة ابتدائية مهملة
void Rest(char *txtint size);
// وظيفة عكس عناصر المصفوفة
void Reverse(char *txtint size);
//أخذ قيمة الديسمل المقابل للهيكساديسمل
int get_DEC_from_HEX(char c);
// التحويل من هيكساديسمل إلى ديسمل
long HEX_To_DEC(char *txtint size);

int main() 

    
char hex[SIZE];
    
printf("\n------------------------------------------------\n");
    
printf(":: Hexadecimal To Decimal Converter ::\n\t\tBy Mr.Ahmad\n");
    
printf("------------------------------------------------\n");
    for (;;)
    {
        
Rest(hexSIZE);
        
printf("Hexadecimal : ");
        
Input(hex,SIZE);
        
Reverse(hex,SIZE);
        
printf("Decimal : ");
        
printf("%ld\n",HEX_To_DEC(hexSIZE));
        
printf("\a\n");
    }
    return 
0;


void Input(char *txt,int size

    
int i 0
    
char c
    
scanf("%c",&c); 
    *
txt c
    
txt++; 
    while ( 
!= '\n'
    { 
        if ( 
size
        { 
            
scanf("%c",&c); 
            *
txt c
            
i++; 
            
txt++; 
        } 
        else 
        { 
            break; 
        } 
    } 


void Rest(char *txtint size)
{
    
int i;
    for (
i=i<sizei++)
    {
        
txt[i] = '?';
    }
}

void Reverse(char *txtint 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 *txtint size)
{
    
long long total 0;
    
int i,place 0;
    for (
i0sizei++)
    {
        if (*
txt != '?')
        {
            
total += (get_DEC_from_HEX(*txt) *  pow(16.0,place));
            
place++;
        }
        
txt++;
    }
    return 
total;


تجربة البرنامج : (ملاحظة : الرقم الذي أنت وضعته في الموضوع كبير جداً سيظهر Overflow عند محاولتك تحويله ) :



بالتوفيق .

 

توقيع Mr.Ahmad  

 

سبحان الله وبحمد ,,, سبحان الله العظيم
الحمد لله كما ينبغي لجلال وجهه وعظيم سلطانه .
اللهم صل على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد . اللهم بارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد.

 


التعديل الأخير تم بواسطة Mr.Ahmad ; 28-02-2010 الساعة 01:32 AM.
Mr.Ahmad غير متواجد حالياً   رد مع اقتباس