2016-04-12 8 views
-2

Soru: İki dizi A ve B parametresine sahip olan ve dizilerin karşılık gelen öğelerinin toplamını hesaplayan ve saklayan sumArray() fonksiyonunu yazın. Gerekli gördüğünüz ek parametreleri ekleyin. two İki tam sayı dizisi X1 ve X2'nin girişini gerçekleştirmek için önceki slayttaki inputArray() işlevini kullanan bir ana() işlevini yazın ve karşılık gelen X1 ve X2 değerlerinin toplamını hesaplamak için sumArray() öğesini kullanın. Daha sonra hesaplanan değerleri gösterir.çevrimiçi yanıtlardan C++ işlevinden birden çok değerin nasıl döndürüleceğini belirleyemiyor

Bir işlevden birden çok değer döndürmek için bir yol arıyordum, ancak yine de bazı örnekleri denedikten sonra bile çalışmıyor. Herkes bana yardım edebilir, ben sadece öğrenmeye başladım.

Sorun: main() içerisinde sumA ve sumB değerlerini nasıl alacağımı anlayamıyorum.

#include <iostream> 

using namespace std; 

int sumArray(int a[], int b[]){ 
int sumA=0, sumB=0; 
for(int i=0; i<4; i++){ 
    sumA += a[i]; 
    sumB += b[i]; 
} 
return sumA,sumB; 
} 

void inputArray(int arg[], int n){ 
for(int i=0; i<n; i++){ 
    cin>>arg[i]; 
} 
} 

int main(){ 
int firstarray[4]; 
int secondarray[4]; 
int l=4; 

cout<<"Input 4 values for the array 1: "; 
inputArray(firstarray,l); 

cout<<"Input 4 values for the array 2: "; 
inputArray(secondarray,l); 

sumArray(firstarray,secondarray); 

cout<<"sum of array 1 is: "<<firstarray<<endl; 
cout<<"sum of array 2 is: "<<secondarray<<endl; 

return 0; 
} 

Bu bunu öğrendim tek yolu: Burada

benim kodlardır.

+0

her zaman, * her zaman * bir dil etiketi ekleyin. Sizin için [tag: C++] ekledim. –

+0

lütfen kodunuzu doğru şekilde girin. Bize yardım etmemizi istiyorsun, o yüzden onu en iyi şekle getir. –

+0

Kodunuzdaki sorun nedir? Bize neyin yanlış olduğunu söylemiyorsun. Sadece "işe yaramıyor" sizi bir yere götürmeyecek - bu bir araba tamircisini çağırmak ve ona "sen bana yardım edeyim, arabam işe yaramıyor" diyerek sonra asılı kalıyor. –

cevap

1

Referansları 2 ek argüman olarak kabul edebilirsiniz. Daha sonra sumA ve sumB'yi doğru değerlere ayarlayabilirsiniz.

void sumArray (int a[], int b[], int & sumA, int & sumB) 
{ 
    sumA=0; 
    sumB=0; 
    for(int i=0; i<4; i++){ 
    sumA += a[i]; 
    sumB += b[i]; 
    } 
} 

Ardından, sadece o fonksiyon iki kez demiyorlar Neden

int firstarray[4]; 
int secondarray[4]; 
// do your stuff here 
int sumA, sumB; 
sumArray(firstarray,secondarray, sumA, sumB); 
cout<<"sum of array 1 is: "<<sumA<<endl; 
cout<<"sum of array 2 is: "<<sumB<<endl; 
0
std::tuple<int,std::string> return_two() 
{ 
    return std::make_tuple(42, "don't panic"); 
} 



auto sval = std::string{}; 
auto ival = 0; 
std::tie(ival,sval) = return_two(); 
+2

Bu, açıklama yapılmadan sadece kod yanıtıdır. Ayrıca, OP'nin kullanabileceğinden bile bahsetmediği dil özelliklerini kullanır ve hatta gerekli başlıkları bile eklemezsiniz. –

+0

Lütfen kodunuzun bazı tanımlarını eklemeyi deneyin. Kodu anlamada yardımcı olacaktır – silwar

0

gibi kullanabilirsiniz? Eğer bu şekilde yapamıyorsan

void inputArray(int arg[], int n){ 
for(int i=0; i<n; i++){ 
    cin>>arg[i]; 
} 

} 
int main(){ 
int firstarray[4]; 
int secondarray[4]; 
int l=4; 

cout<<"Input 4 values for the array 1: "; 
inputArray(firstarray,l); 

cout<<"Input 4 values for the array 2: "; 
inputArray(secondarray,l); 

cout<<"sum of array 1 is: "<<sumArray(firstArray)<<endl; 
cout<<"sum of array 2 is: "<<sumArray(secondArray)<<endl; 

return 0; 
} 

, o zaman bir işaretçi döndürebilir: kodunuzun geri kalanı için Sonra

int sumArray(int array[]){ 
int sum=0; 
for(int i=0; i<4; i++){ 
    sum += array[i]; 
} 
return sum; 
} 


:
için sumArray fonksiyonunu değiştirme bir dizinin ilk kısmı. Burada görüldüğü gibi: Return array in a function

İlgili konular