Vad kan va fel?|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Vad kan va fel?
Guest
Member
Medlem
Forum Posts: 9344
Member Since:
August 22, 2005
sp_UserOfflineSmall Offline
1
June 14, 2009 - 9:44 pm
sp_Permalink sp_Print

//Försöker lägga in värden i en array och sen stega igenom dem med en pekare och sen räkna ut sammanlagda värdet av alla tal, minsta talet och största talet i arrayen.

#include // cout, cin
#include
#include
#include
using namespace std;

int main()
{
//Initiera programmet
dos_console(); //Kolla om detta behövs
srand((unsigned)time(0)); //Kolla om detta behövs

int size=0;
cout << "Ange arraystorlek: ";
cin >> size;
int array[size];

for (int i = 0; i {
array[i]= rand()%100000/100.0; // Slumpa ett flyttal i intervallet 0 till 100 (100 är inte med!)
int summa = summa + array[i] //beräknar sammanlagda värdet
cout << array[i] < }

int c=0;
//Beräkna största värdet
for (int *counterpekare = array[0]; c {

if (array[c] > counterpekare)
counterpekare = array[c];

}

int c2=0;
//Beräkna minsta värdet
for (int *counterpekare2 = array[0]; c2 {
if (counterpekare2 < array[c2])
counterpekare2 = array[c2];
}
}

Coore
Member
Medlem
Forum Posts: 6002
Member Since:
January 4, 2001
sp_UserOfflineSmall Offline
1228464
June 17, 2009 - 8:18 am
sp_Permalink sp_Print

Du tilldelar ju ditt slumpade flyttal till en integer.

Sen gör du fel när du tilldelar pekaren. Array[0] ger dig värdet i arrayen på plats 0. &Array[0] ger dig pekaren.

Gör alltid alla initieringar av variabler i början av funktionen. Blir hemskt att läsa annars och inte alla kompilatorer som stödjer den koden du har skrivit nu.

Rhino
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 153
Member Since:
August 9, 2001
sp_UserOfflineSmall Offline
1228639
June 19, 2009 - 9:41 am
sp_Permalink sp_Print

Coore wrote: Du tilldelar ju ditt slumpade flyttal till en integer.

Sen gör du fel när du tilldelar pekaren. Array[0] ger dig värdet i arrayen på plats 0. &Array[0] ger dig pekaren.

Gör alltid alla initieringar av variabler i början av funktionen. Blir hemskt att läsa annars och inte alla kompilatorer som stödjer den koden du har skrivit nu.

Vilka kompilatorer stödjer inte detta menar du? Det är ju C++ han skriver i, inte C89. (Det är till och med ofta rekommenderat att deklarera variabler så nära användning som möjligt för att inte behöva gå till början för att se vad det är för typ/värde).

Däremot så är inte int array[size]; // där size kommer från scanf
giltig C/C++. Vissa versioner av GCC kan gå med på det, men det är fel. Dynamiska arrayer skapas med malloc (C) och new (C++).

Och varför skriver du "Du tilldelar ju ditt slumpade flyttal till en integer." som om det vore ett fel? Fult ja, men knappast värt att stå först som ett fel (rand() % 100; // är ju tillräckligt).

Ge inte för mycket tips om du inte kan språket.

----------------------------

Till MacDaddy: Varför blandar du in pekare i loopen? För att få fram största värdet så kan du ju nå dem via vanlig indexering. Om du först kollar så arrayen är minst ett element långt så får du fram maximum såhär:

int arrMax = array[0];
for (i = 1; i < size; i++)
if (array[i] > arrMax) arrMax = array[i];

Dessutom -googla på operatorn new för C++.

Som Coore skriver är pekaren (varför du tror att du vill ha den) till element X i arrayen &array[X]. Dock, eftersom det var just &array[0] du ville komma åt så skriver man oftast int* p = array; // p pekar på array[0]

Coore
Member
Medlem
Forum Posts: 6002
Member Since:
January 4, 2001
sp_UserOfflineSmall Offline
1228727
June 21, 2009 - 2:40 pm
sp_Permalink sp_Print

Jag har aldrig kodat C++ utan bara C för inbyggda system, så det kan ha blivit lite fel där ja.

Jag rangordnade inte det jag skrev efter hur viktigt det var, och jag tyckte att det var värt att påpeka att han tilldelade en float till en integer.

Jag kan inte språket C++, men jag kan C och kom med ett par synpunkter för att hjälpa honom.

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 630
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL