Trädvy Permalänk
Medlem
Registrerad
Jul 2019

Hjälp med enklare c++

"Pekare är en datatyp som refererar till en annan datatyp på en annan minnesplats i primärminnet."
Någon som skulle kunna hjälpa mig och förklara kodbiten nedan? Vilka värden är det som skrivs ut?
Samt peta ut felen i kodbiten som är längst ner.

#include <iostream> using namespace std; int main(){ int i=1; int ii=11; int o=2; int *oo=&o; i--; --i; ii=i+ii+*oo; *oo=*oo+*oo+o; cout<<i<<endl<<ii<<endl<<o<<endl<<*oo<<endl; }

Finn 5 fel...

#include <sodastream> using namespace std; int main(){ while(int i=0; i<2; i++){ cout<< KanonKula <<endl; ) int a=2 if(a==2) a=3; }

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

Är med på att första biten kod skriver ut värdena: -1, 12, 6, 6 men förstår inte riktigt.

Trädvy Permalänk
Medlem
Plats
undar jordi
Registrerad
Okt 2014

i == -1 eftersom både "i--" och "--i" minskar i med 1. i initieras till 1 och minskas med 1 två gånger, vilket blir -1.

ii == 12 eftersom den börjar som 11. Sen på raden "ii = i + ii + *oo;" sätts ii till i + ii + *oo = -1 + 11 + 2 = 12.

0 == 6 eftersom den börjar som 0 och sedan sätts till 6 på raden "*oo=*oo+*oo+o;" eftersom "*oo + *oo + o = 2 + 2 + 2 = 6"
Men hur kan o ändras när det är *oo som vi ändrar värde på? När man skriver int *oo=&o; så pekar oo på minnesplatsen o. Och när man sen sätter *oo till något nytt ändrar man det som är sparat på minnesplatsen o.

*oo == 6 eftersom om oo pekar på minnesplatsen för oo måste värdet vara samma.

Trädvy Permalänk
Medlem
Plats
undar jordi
Registrerad
Okt 2014

Vilka fel har du själv hittat? Tänk igenom och resonera.

1: #include <sodastream>
2: using namespace std;
3: int main(){
4: while(int i=0; i<2; i++){
5: cout<< KanonKula <<endl;
6: )
7: int a=2
8: if(a==2)
9: a=3;
10: }

Rad 4 är en for-loop enligt argumenten, inte en while-loop.
Rad 6 har en parentes som inte stänger någonting.
Rad 7 saknar semikolon.
Rad 9 ska ha en indentering eftersom den tillhör if-satsen.
Rad 11 finns inte, som ska innehålla en klammer som stänger main().

Dold text
Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2010

De ser ut som programmeringstest, som en läxa i en kurs eller ett inträdesprov till något. Det andra exemplet går att hitta om man googlar lite med variabelnamnen i sökfrågan.

Det är meningen att du ska göra såna själv, utefter kunskap som du redan ska ha skaffat.
Det anses dålig stil att posta programmeringsuppgifter på forum. Vissa forum har t.om specifika regler som förbjuder det.

Jag bojkottar butiker som bryter mot Riksbankslagen 5 kap 1 §

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2018
Skrivet av kijsee92:

"Pekare är en datatyp som refererar till en annan datatyp på en annan minnesplats i primärminnet."
Någon som skulle kunna hjälpa mig och förklara kodbiten nedan? Vilka värden är det som skrivs ut?
Samt peta ut felen i kodbiten som är längst ner.

#include <iostream> using namespace std; int main(){ int i=1; int ii=11; int o=2; int *oo=&o; i--; --i; ii=i+ii+*oo; *oo=*oo+*oo+o; cout<<i<<endl<<ii<<endl<<o<<endl<<*oo<<endl; }

Finn 5 fel...

#include <sodastream> using namespace std; int main(){ while(int i=0; i<2; i++){ cout<< KanonKula <<endl; ) int a=2 if(a==2) a=3; }

Finn 5 fel? Vilka värden skrivs ut?
För mig handlar det rätt uppenbart om läxhjälp, eller rättare sagt läxlösning. Hur många kapitel in är ni och vilka är dom?

Enthoo Evolv ATX | Asus ROG Strix Z370-H Gaming | Delid 8700K UV 1.100v | NH-D15 | 32GB DDR4 | NVME M2 960 500GB | AG271QG | Gigabyte 1080Ti | R1600T3 Edifier | Sony MDR-1A | Cerberus MK II | Logitech G403 | SteelSeries QcK - XXL Musmatta | Mitt skrivbord Windows 2019 x64 Enterprise LTSC | ASUS MG279Q | Behöver du hjälp? Egna skriverier

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

@NybbTronio: Antar att #include <sodastream> ska bytas ut till #include <iostream>

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

@Findecanor: Det är gamla uppgifter jag kikar på. hittade 2 fel själv på andra men är inte världsbäst på sånt här än direkt så blir blind för småfel i koden. Sen så förstod jag inte riktigt första då "Pekare" är ett uttryck jag inte hört än.

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

@iBurningMan: Har bara lärt mig det mest grundläggande än så länge. Har precis börjat kika på for-loopar.

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

Är inte ett fel också att man måste lägga till "" i cout<< KanonKula <<endl; så det blir cout<< "KanonKula" <<endl;

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

@kijsee92: När du deklarerar en vanlig variabel, t.ex.:

int i = 17;

så talar du om för kompilatorn att du vill lagra talet 17 i ett datablock någonstans i minnet (du bryr dig inte om vart), och att du vill referera till det datablocket med namnet i.

En pekare är också en variabel, men datablocket som en pekare refererar till innehåller en minnesadress istället för vanlig data. Så du kan deklarera en pekare som pekar på t.ex. minnesadress 0x239843b3:

int *p = 0x239843b3;

Men att bara peka på någon godtycklig minnesadress är ju inte så användbart, så istället kan man använda &-operatorn för att ta reda på vilken adress en viss variabel refererar till:

int i = 17; int *p = &i; // p pekar på adressen för i

För att ha någon nytta av pekare så behöver man sen kunna tala om att man vill komma åt det som pekaren pekar på, vilket man i C++ förvirrande nog gör med *-operatorn (som även används för att deklarera pekare, och för att multiplicera saker). Så t.ex.:

int i = 17; int *p = &i; *p = 18; // Lagra 18 på adressen som p pekar på, d.v.s. i. std::cout << i << '\n'; // Skriv ut värdet som i refererar till. std::cout << p << '\n'; // Skriv ut adressen som p refererar till. std::cout << *p << '\n'; // Skriv ut värdet på adressen som p refererar till.

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

@NybbTronio: kan det vara så att parantesen ) egentligen ska vara en } klammer som stänger for-loopen och att den klammer som finns längre ner är den som stänger main()?

Trädvy Permalänk
Medlem
Registrerad
Jul 2019

Vad innebär det att strukturera data på ett ändamålsenligt sätt?

Trädvy Permalänk
Medlem
Plats
undar jordi
Registrerad
Okt 2014

@kijsee92: Ja så är det