الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Return Char Array And Convert It To Int

بدأه Ayoub JAMAL EL IDRISSI في 1 يناير 2010 · 9 رد · 1,449 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ASSALAMO 3ALAYKOM

Sorry coz i m writing in english but i don't have an arabic keyboard right now !!

my prob is so simple for you (coz i m soooooooo fresh with C/C++ ) i creat a function that return an array of Chars

i want then convert the resulted Char Array to Int then print it into screen

the code of my function is :

char* ToBinary(int Number)
{
      int Rest;
      int i=0;
      char Result[100];

      //int NumberRest;
      while (Number > 0)
      {
            Rest = fmod(Number,2);
            Result = Rest;
            Number = Number / 2;
            i++;
      }
      return Result;
}

thank you and sorry for my english

#2

السلام عليكم هذا تعديل طفيف على الكود:

char* ToBinary(int Number)
{
  	int Rest;
  	int i=0;

static   char Result[100];
for(int k=0;k<100;k++)
Result[k]='\r';
  	while (Number > 0)
  	{
        	Rest = (Number%2);
        	Result[100-i] =char(Rest+48);
        	Number = Number/2;
        	i++;
  	}

  	return Result;
}

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 1 يناير 2010 في 08:00

tvquran_6.gif

#4

إستخدم الدالة atoi يا أيوب , arraytointeger والثانية للعكس itoa وهي integertoarray ..

تحول من char -> int

طبعا يمكن بالطريقة الأخرى أن تعمل مقارنة ب switch بين السلاسل , والطريقة الأفضل لو لم يكن هناك دعم لatoi أن تقوم بعمل mapping بين قيم الآسكي مع أرقام ال int , بطرح أو جمع قيمة معينة لرقم الآسكي ليظهر مقابله تماما كرقم int .

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

هل هذا ماتريد:

int ToBinary(int Number)
{
 	int Rest=0,i=0;
 	while (Number)
 	{
 	Rest += (Number%2)*pow(10.0,i++);
 	Number /= 2;
 	}
 	return Rest;
}
tvquran_6.gif

#7

فهد المشكلة كانت في تحويل :

'1' = 1

'2' = 2

'3' = 3

وهكذا ...

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#8

ا\طرح الحرف 'صفر ' من كل عمصر من المصفوفة و ستحصل علي العدد المقابل .

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#9

السلام عليكم ...

أهلاً أخ أيوب :)

إذا كنت تريد كتابة عملية التحويل, فالكود التالي يوضح الطريقة, رغم أنه مبسط لأبعد الحدود و لا يتم فيه التحقق من أي خطأ وارد الحصول ككون النص يحتوي على غير الأعداد و هكذا.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int str_to_int(char* number_string)
{
	int number_of_digits = strlen(number_string);
	int base = 10, exponent = number_of_digits-1, number = 0;
	int i;

	for(i = 0; i < number_of_digits; ++i)
		number += (int) ( (number_string - '0') * pow(base, exponent--) );

	return number;
}

char* int_to_str(int number)
{
	int number_of_digits = (int)log10(number) + 1;
	char* string = malloc(number_of_digits+1);
	int i;

	string[number_of_digits] = 0; // the null terminator!
	for(i = number_of_digits-1; i >= 0; --i)
	{
		string = number % 10 + '0';
		number /= 10;
	}

	return string;	
}

int main()
{
	char* string = int_to_str(1999);
	printf("convert string to number: %d \n", str_to_int("1999"));
	printf("convert number to string: %s \n", string);

	free(string); // welcome to C! you have to free what you allocated!
}

لاحظ, لو أنك تريد القيام بهذا الأمر, فمكتبة C جيدة في هذا الأمر, فهناك sprintf و strtol للقيام بما تريد.

#10

غير متأكد مما يريد بالضبط لكن هناك عده طرق لذلك الدالة الاولى كانت هناك امور بها . أولا مصفوفة حرفيه داخليه لا يقبلها إلا ان تكون من النوع static الامر الثاني عند التحويل تحتاج قلب الحروف في المصفوفه وهناك طرق لذلك .لكني استغنيت عنه بالكتابه في المصفوفة من الاخير لكن سوف تظهر مشكله الحروف الفارغه من اليسار واستطيع جعلها اصفار او فراغ او أمسحها لكن الحرف '\r' عيبه يظهر عندما تريد الكتابه وأظهار النتيجه بجانب نص!!!.

الداله الاخيره اعتقد انها مفهومه

tvquran_6.gif

مواضيع مشابهة