Behöver hjälp med vektorer samt looper i programmering C++

Trädvy Permalänk
Medlem
Registrerad
Apr 2017

Behöver hjälp med vektorer samt looper i programmering C++

Hej,

Jag sitter och försöker lära mig lite programmering i C++. Använder Visual 2010 express. Men min kod ger mig inte rätt svar.
Jag försöker få datorn att räkna ut medelvärdet av mina tal men jag får fel svar. Kan jag inte använda mig av en for loop här?
Vad kan det vara mer som är fel?

se koden nedan; (vet inte hur man gör code-taggar)

#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; }

Redigerat in [code]-taggar //Mod
Trädvy Permalänk
Medlem
Plats
Svenstavik
Registrerad
Jan 2010

Vad får du för resultat då? Vad får du för fel?

FD R5|ASUS p8z77-V LX| Intel core i7 2700k @ 4.3Ghz|Corsair H115i|Corsair XMS3 DDR3 24GB |MSI 980 Ti Gaming 6G|Samsung 840 EVO 500GB + 17TB lagrning |EVGA superNOVA g2 750w |Asus VG248QE + BenQ GL2450 x2

Trädvy Permalänk
Medlem
Registrerad
Apr 2017

@Elghinnarisa: Jag får att svaret blir typ -889546466.
Inga errors i debuggern

Trädvy Permalänk
Medlem
Plats
Svenstavik
Registrerad
Jan 2010
Skrivet av BellaB:

@Elghinnarisa: Jag får att svaret blir typ -889546466.
Inga errors i debuggern

Konstigt. Jag copy/pasta det in i http://cpp.sh/ (då jag ej har något på datorn just nu) och där fungerade det bra.

Nåja, kan inte säga jag kommer ihåg mycket från min programmering men kanske något med just visual express du använder då.

FD R5|ASUS p8z77-V LX| Intel core i7 2700k @ 4.3Ghz|Corsair H115i|Corsair XMS3 DDR3 24GB |MSI 980 Ti Gaming 6G|Samsung 840 EVO 500GB + 17TB lagrning |EVGA superNOVA g2 750w |Asus VG248QE + BenQ GL2450 x2

Trädvy Permalänk
Webbutvecklare
Moderator
Plats
::1
Registrerad
Dec 2002

@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.

[code]
...
...
...
[/code]

Abstractions all the way down.