Mohammed Bwahna نشر 10 مايو 2021 أرسل تقرير نشر 10 مايو 2021 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[]; } 1 اقتباس
0 Wael Aljamal نشر 10 مايو 2021 أرسل تقرير نشر 10 مايو 2021 في لغة جافا، لا يمكن إعادة أكثر من قيمة من دالة (مثلا لديك تعيد سلسلة نصية و مصفوفة) يجب أن تعيد متغير واحد. والمتغير الذي تعيده دالة يجب أن يكون من نفس نمطها حيث لديك دالة تعيد متغير 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 وهذا ليس ضروري حاليا. 1 اقتباس
0 Mohammed Bwahna نشر 10 مايو 2021 الكاتب أرسل تقرير نشر 10 مايو 2021 صديقي هذه لغه c++ وشكرا على مساعده ولكنني لم افهم كثيرا اقتباس
0 محمد صقر3 نشر 10 مايو 2021 أرسل تقرير نشر 10 مايو 2021 يحتوي الكود علي مجموعة أخطاء سأوضح لك وسأضع الكود الصحيح كامل بعد توضيح الأخطاء نوع الداتا اللي بترجعها الداله هو 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; } اقتباس
السؤال
Mohammed Bwahna
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.