我必須找到給定陣列中的元素,我在其他站點找到了一個程式,但是當我嘗試以我的方式解釋代碼時,出現錯誤。
那是來自另一個網站:
#include <iostream>
using namespace std;
// function to return sum of elements
// in an array of size n
int sum(int arr[], int n)
{
int sum = 0; // initialize sum
// Iterate through all elements
// and add them to sum
for (int i = 0; i < n; i )
sum = arr[i];
return sum;
}
int main()
{
int arr[] = { 12, 3, 4, 15 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Sum of given array is " << sum(arr, n);
return 0;
}
那是我的:
#include <iostream>
using namespace std;
int Function(int arr[], int Broi)
{
int suma = 0;
for (int i = 0; i < Broi; i ) {
cin >> arr[Broi];
suma = arr[i];
}
return suma;
}
int main()
{
int arr;
int Broi = sizeof(arr) / sizeof(arr[0]);
cout << "Srednoto Aritmetichno e: " << Function(arr[], broi);
return 0;
}
第一個程式也給出了陣列的數字,但我希望用戶在你寫下 arr 的長度時 cin>> 它們。
uj5u.com熱心網友回復:
您的代碼根本沒有宣告陣列。它正在宣告一個單一的int.
你在評論中說:
任務是讀取 10 個數字,并將它們放入陣列
因此,您應該在將它傳遞給之前宣告一個 10-int陣列main()并用用戶值填充它,類似于原始代碼的做法。用戶輸入并不真正屬于開始。Function()Function()
嘗試更像這樣的事情:
#include <iostream>
using namespace std;
int Function(int arr[], int Broi)
{
int suma = 0;
for (int i = 0; i < Broi; i ) {
suma = arr[i];
}
return suma;
}
int main()
{
int arr[10];
cout << "Enter 10 numbers: ";
for(int i = 0; i < 10; i){
cin >> arr[i];
}
cout << "The sum is: " << Function(arr, 10);
return 0;
}
uj5u.com熱心網友回復:
該行arr[Broi]正在越界訪問陣列,導致未定義行為,因為該陣列僅包含一個元素。即使它由Broi元素組成,它也會越界訪問陣列,因為有效的索引是0to Broi - 1。
在評論部分(但不是在問題中),您表示您應該10從用戶那里讀取數字。如果arr指向一個10元素陣列而不是1元素,那么寫arr[i]而不是arr[Broi].
該問題的最簡單解決方案是根本不使用陣列:
#include <iostream>
constexpr int NUM_INPUTS = 10;
int main()
{
int input;
int sum = 0;
for ( int i = 0; i < NUM_INPUTS; i )
{
//prompt user for input
std::cout << "Please enter integer #" << i 1 << ": ";
//attempt to read integer from user
if ( ! ( std::cin >> input ) )
{
std::cout << "Input failure!\n";
return 1;
}
//add user input to sum
sum = input;
}
//print sum
std::cout << "\nThe sum of all numbers is: " << sum << ".\n";
return 0;
}
但是,由于您在評論部分指出您應該使用陣列,那么您可能應該首先將所有10數字讀std::cin入一個10元素陣列,然后計算總和:
#include <iostream>
#include <cstdlib>
constexpr int NUM_INPUTS = 10;
void input_array( int arr[] )
{
for ( int i = 0; i < NUM_INPUTS; i )
{
//prompt user for input
std::cout << "Please enter integer #" << i 1 << ": ";
//attempt to read integer from user
if ( ! ( std::cin >> arr[i] ) )
{
std::cout << "Input failure!\n";
std::exit( EXIT_FAILURE );
}
}
}
int calculate_sum( int arr[] )
{
int sum = 0;
for ( int i = 0; i < NUM_INPUTS; i )
{
sum = arr[i];
}
return sum;
}
int main()
{
int arr[NUM_INPUTS];
//fill array with user input
input_array( arr );
//print sum
std::cout << "\nThe sum of all numbers is: " << calculate_sum( arr ) << ".\n";
return 0;
}
這兩個程式都有以下輸出:
Please enter integer #1: 20
Please enter integer #2: 30
Please enter integer #3: 10
Please enter integer #4: 5
Please enter integer #5: 31
Please enter integer #6: 17
Please enter integer #7: 6
Please enter integer #8: 14
Please enter integer #9: 18
Please enter integer #10: 50
The sum of all numbers is: 201.
uj5u.com熱心網友回復:
沒有太多復雜功能的簡單修復如下所示:
#include <iostream>
int Function( int* const array, const std::size_t elementCount)
{
int suma { };
for ( std::size_t idx = 0; idx < elementCount; idx )
{
std::cin >> array[ idx ];
suma = array[ idx ];
}
return suma;
}
int main( )
{
int myArray[ 4 ] { };
int suma = Function( myArray, sizeof( myArray ) / sizeof( *myArray ) );
std::cout << "Srednoto Aritmetichno e: " << suma << '\n';
return 0;
}
就是這樣。您可以將 的大小更改為myArray適合堆疊記憶體的任何內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372509.html
