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

pointers

مغلق
بدأه Andromeda في 13 مارس 2006 · 6 رد · 983 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
#include<iostream.h>
int port(char*ip)
{
	if(*ip=='\0')
  return 0;
	else{
  cout<<*ip%2;
	return	*ip/2;
    if(*ip=='.')
	{
         ++*ip;}}}
int main()
{
	char x;
	cin>>x;
	return port(&x);}

انا كتبت هذا الكود على اساس انه راح يحول ip الى واحد وصفر

مثلا لما اعطيه 255.0.0.0 المفروض يكون الجواب 11111111

لكن الكود بدل مايحول الى باينري عطاني مجيولس العدد الاول يعني 0؟؟

ممكن احد يقولي شنو القضيه ؟؟ <_<

#2

ip هو مؤشر من نوعchar كيف تريد اجراء عملية حسابية عليه؟؟

طبعا السي++ لن تظهر لك خطأ لأنها تجري العملية الحسابية على قيمة الحرف في قائمة ascii .

يعني لو كان أول حرف 1 (ومن المعلوم أم حرف 1 قيمة ascii الخاصة به 49)

سوف تتم العملية كالتالي :

49%2
#3

اخي الكريم

في كل الاحوال البرنامج يعمل بهذه الطريقة حتى لو وضعت int *ip

دائما يضهر الموجلس!!!

#4

بسم الله الرحمن الرحيم

السلام عليكم

أولا أنتا باعت للدالة reference to char ولو انتا دخلت 12 هل الرقم ككل هيتبعت للدالة لا هتلاقى الواحد بس هوة اللى أتبعت للدالة

وثانيا أنتا بتعمل عمليات حسابية ع char مع لو أنتا طبعتة هيديك أرقام غريبة (أتعقد انك لو طرحتة من قيمة معينة ممكن يديك الرقم الصحيح)

ثانيا عملية التحويل محتاجة recursive

ممم أعتقد ان الحل يبقى واضح وبسيط لو كان الدالة يترمى لها قيمة من النوع int

كما موصح

#include <iostream>
#include <conio>
void bin(int x)
{
if(x == 0 )
 return;

 bin(x/2);

  cout<<x%2;
  }

  void main()
  {
   bin(12);
   getch();
   }

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#5

السلام عليكم وحمة الله

البرنامج هيشتغل صح لكن لو اديتو عدد يكون int

انا عوزة اديلو internet protocol والبرنامج لازم يحولهولي الى class وانز وزيروز

يعني انا لازم اديلو string وهو هيحول بمجرد انو يشوف '.' على اعتبار ان اليوزر هو الي هيدي الip مش البرنامج

(السؤال صعب جدا معتقدش انو هيتحل) :(

#6

ما في شي ما يتحل!!

اذا ناوي تعطي للبرنامج قيمة IP لازم البرنامج يستقبلها على انها سلسلة char .

وكل خلية في هذه السلسة تكون رقم (أو نقطة) هكذا :

[2][5][5][.][0][.][0][.][0]

الان قم بعمل حلقة تأخذ كل خلية على حدة وتحولها الى الرقم المطلوب...

هذا كود لتقريب الفكرة فقط :

int=ip-'0';

هنا لو كان الحرف في هذه الخلية لتقل ’2’ (انتبه هنا هذا ليس رقم 2 إنما رمز 2) ... لنحوله الى الرقم 2 يجب أن نعرف الآتي:

قيمة الحرف 2 في قائمة ascii هي 50.. لنحوله الى قيمة الرقم 2 نطرح منه 48 وهي قيمة ascii الخاصة بالحرف 0. لهذا قمت بطرح ’0’ في الكود أعلاه.

هكذا نحول 2 من char الى int..

أرجو أن يكون كلامي واضحا.

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 17 مارس 2006 في 19:42

#7

حتى يكون برنامجك كاملاً وحتى تزيد من كفائتك في كتابة البرامج.. من الأفضل أن يكون قادراً على تحديد المدخل هل هـو ip فعلاً ... أو شيء آخر !!!!!!!!!!!!!!

هذا الموضوع مغلق.

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