August 22, 2005
//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
#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];
}
}
January 4, 2001
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.
August 9, 2001
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]
January 4, 2001
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.
1 Guest(s)