@BellaB: Problemet du beskriver skulle kunna uppstå om du försökt läsa utanför arrayens längd (exempel), om du t.ex. hade färre tal i listan eller loopade flera gånger i en tidigare version. Exemplet innehåller även en del kod som inte används just nu; är det exakt den här versionen som uppvisar problemet för dig, eller kan det ha blivit några ändringar i det som klistrades in på forumet? Försök att hålla exempel minimala och med endast relevant kod så att det blir lättare för andra att hjälpa till att isolera problemet, och tänk på indenteringen:
#include <iostream>
using namespace std;
float medel(int v[], int n)
{
int medel[] = {4, 20, 6, 7, 8, 10, 15, 13, 19, 3};
int sum = 0;
{
for (int i = 0; i < 10; i++)
sum = sum + medel [i];
}
return sum;
}
int main()
{
int medel[] = {4, 20, 6, 7, 8, 10, 15, 13, 19, 3};
int sum = 0;
{
for (int i = 0; i < 10; i++)
sum = sum + medel [i];
}
cout << "Medelvardet ar" << sum/10;
system("pause");
return 0;
}
Samma kod, indenterad
• Funktionen float medel(int v[], int n)
används aldrig i exemplet så den kan du ta bort helt.
• Du har skrivit dina for-loopar som { for(...) smth; }
, men antagligen menar du for(...) { smth; }
? I det första fallet deklarerar du ett nytt block med lokalt scope runt for-loopen, och i det andra indikerar du att hela det efterföljande blocket (och inte bara nästa statement) ska köras för varje iteration. Exempel:
{ // Måsvingar utanför loopen
int x = 0; // Se >->->-------------------+
// |
for(int i = 0; i < 10; i++) // |
foo(); // foo() anropas 10 gånger |
bar(); // bar() anropas 1 gång (!) |
} // ∨
cout << x; // Här finns inte längre variabeln 'x' tillgänglig
for(int i = 0; i < 10; i++)
{ // Måsvingar tillhörande loopen
foo(); // foo() anropas 10 gånger
bar(); // bar() anropas 10 gånger
}
• Varför använda en så gammal version? Det har hänt mycket sedan 2010 och om du inte har någon särskild avsikt med att lära dig just den så borde du använda något modernare. I C++11 kan du t.ex. skriva om loopen som:
// Överväg std::array eller std::vector istället för C-arrayer:
// array<int, 10> numbers = {4, 20, 6, 7, 8, 10, 15, 13, 19, 3};
// vector<int> numbers = {4, 20, 6, 7, 8, 10, 15, 13, 19, 3};
int numbers[] = {4, 20, 6, 7, 8, 10, 15, 13, 19, 3};
int sum = 0;
for(auto n : numbers)
sum += n;
Skrivet av BellaB:
vet inte hur man gör code-taggar
Omge koden med [code]
-taggar. Vill du se hur andra har formaterat sina inlägg så brukar det gå att se genom att citera.