اذهب إلى المحتوى
  • 0

تصحيح الأخطاء في لغة ++C

Mohammed Bwahna

السؤال

 

int arrayConvert(int inputArray[], const char outputArray[], int size)
{
    bool validity = true;
    for (int i = 0; i< size; i++){
        if ((inputArray >= 0) && (inputArray < 128))
            outputArray[i] = (char)inputArray[i];
        else{
            validity = false;
            for (int i = 0; i< size; i++)
                outputArray[i] = '.';
            break;
        }
    }
    if (validity)
        return "Valid";
        return outputArray[];
    else
        return "Invalid";
        return outputArray[];
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

في لغة جافا، لا يمكن إعادة أكثر من قيمة من دالة (مثلا لديك تعيد سلسلة نصية و مصفوفة) يجب أن تعيد متغير واحد.

والمتغير الذي تعيده دالة يجب أن يكون من نفس نمطها حيث لديك دالة تعيد متغير int و أنت تحاول إعادة سلسلة نصية أو مصفوفة وهذا لا يمكن. كما أن إعادة مصفوفة بكون بذكر اسمها بدون أقواس.

لكي تعيد مصفوفة أرقام صحيحة عدل تعريف الدالة للتالي:

int[] arrayConvert(.....)

بإضافة الأقواس المربعة بعد int.

ثم إعادة القيمة تكون:

if (validity)
        return outputArray;

كما أنه لتنفيذ تعليمتين بعد تحقيق شرط يتوجب كتابة أقواس مجعدة لتعليمة if :

if (true) {
	do();
	do2();
...
}

لحل مشكلة valid أقترح حاليا طباعتها لل console: System.out.print

لتصبح الشيفرة:

int[] arrayConvert(int inputArray[], const char outputArray[], int size)
{
    bool validity = true;
    for (int i = 0; i< size; i++){
        if ((inputArray >= 0) && (inputArray < 128))
            outputArray[i] = (char)inputArray[i];
        else{
            validity = false;
            for (int i = 0; i< size; i++)
                outputArray[i] = '.';
            break;
        }
    }
    if (validity)
        System.out.println("Valid");
    else
        System.out.println("Invalid");
    return outputArray;
}

اقتصرت على تعليمة return واحدة و تعليمتي طباعة كأبسط حل للمشكلة.

لكي تعيد قيمتين يجب أن يكون نوع الدالة مثلا:

Map<String, Number>

أو أن تتعلم Tuple وهذا ليس ضروري حاليا.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يحتوي الكود علي مجموعة أخطاء سأوضح لك وسأضع الكود الصحيح كامل بعد توضيح الأخطاء

  • نوع الداتا اللي بترجعها الداله هو string وليس int والثاني هو لكي تسطيع الكتابه في مصفوفة ال outputArray لا يجب أن تكون const ماتحتاج ل const
int arrayConvert(int inputArray[], const char outputArray[], int size)
  • تعمل check علي عنصر في المصفوفه inputArray[i] ما علي المصفوفه ككل 
if ((inputArray >= 0) && (inputArray < 128))
  • ماتحتاج إلي for loop إذا القيمه ما صحيح ضع علامة ال . داخل ال outputArray مباشرة 
for (int i = 0; i< size; i++)
    outputArray[i] = '.';
    break;
  • هنا جملة ال return "valid" او return "invalid بتنهي الدالة ما هيوصل في تنفيذ الكود إلي جملة ال return outputArray التي تليها 
  • الأمر الثاني ماتحتاج تعمل return outputArray لأنها array وبتكون في الدالة ب passed by refrence وبالتالي عند أستدعاء الداله وإعطاءها outputArray ستقوم c++ بوضع الناتج داخل المصفوفه التي قمت بإعطاءه للداله 
    if (validity)
        return "Valid";
        return outputArray[];
    else
        return "Invalid";
        return outputArray[];
  • الكود بعد تعديل مجموعة الأخطاء
#include <iostream>

using namespace std;

#define SIZE 5

string arrayConvert(int inputArray[], char outputArray[], int size)
{
    bool validity = true;

    for (int i = 0; i< size; i++){
        if ((inputArray[i] >= 0) && (inputArray[i] < 128))
            outputArray[i] = (char)inputArray[i];
        else{
            validity = false;
            outputArray[i] = '.';
        }
    }
    if (validity)
        return "Valid";
    else
        return "Invalid";
}

int main()
{
    int inputArray[SIZE] = {109,110,200,118,230};
    char outputArray[SIZE];

    string result = arrayConvert(inputArray, outputArray, SIZE);
    cout<<"outputArray: ";
    for(int i = 0; i < SIZE; i++)
        cout<<outputArray[i]<<" ";
        
    cout<<"\nResult is " << result <<"\n";
    return 0;
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...