Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Fråga om c++

Skapad av Borttagen, 2010-12-08 21:32 i Webbutveckling & Programmering

1 531
28 inlägg
0 poäng
Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
0
Hej.

Jag har precis börjat roa mig med att lära mig C++, och jag har givetvis massor av funderingar..

Det jag undrar för tillfället är om det på nåt sätt går att skicka två värden till ett block och få ett värde tillbaka.
T.ex, något i stil med:


Ett stycke C#-kod:

int TestTest()
{
int x;
//statements, expressions and whatnot..
return x;
}

int main()
{
int i;

i = TestTest(value1,value2);
//Skicka två värden som används i blocket "TestTest", och få ett värde tillbaka som sparas som 'i'

return 0;
}

Praise the sun!

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

-------
Visningsbild
P 30 Linköping Hjälte 4 577 inlägg
0
Du måste deklarera variablerna som skickas i funktionen
Ett stycke C#-kod:
int TestTest(int var1, int var2)
{
int x;
//statements, expressions and whatnot..
return x;
}

int main()
{
int i;

i = TestTest(value1,value2);
//Skicka två värden som används i blocket "TestTest", och få ett värde tillbaka som sparas som 'i'

return 0;
}

Jag hette tidigare Ziron

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0
Svar till Ziron [Gå till post]:
Så där ja.
Awesome. Tack. =)



Tillägg av Phrosen 2010-12-08 21:44


Svar till Ziron [Gå till post]:
Så här ser min kod ut:


Ett stycke C#-kod:

#include <iostream>
#include <cstdlib>
using namespace std;

int GetRandomInt(int LOW,int HIGH)
{
int i, r;
srand (time(NULL));
r = rand();

for(i = LOW; r >= HIGH; i++)
r = rand();

return r;
}


int main()
{
int r = GetRandomInt(1,10);

cout << "Random number: " << r;

return 0;
}



Den verkar funka. Det enda problemet är att jag helt plötsligt fick "Random number: 0".
Jag hade satt LOW = 1 och HIGH = 10, så jag tycker att 0 borde inte komma upp?



Praise the sun!

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till Phrosen [Gå till post]:
vill du ha ett random nummer mellan 1 och 10 så gör såhär:
Ett stycke C#-kod:

int GetRandomInt(int LOW,int HIGH)
{
int i, r;
srand (time(NULL));
r = rand()%HIGH + LOW;

return r;
}



Ingen status

detvanliga
Visningsbild
Hjälte 381 inlägg
0
Svar till Phrosen [Gå till post]:
% ger resten av delat med, så tar man tex:

953/10 så blir resten 3, då det inte går att dela 3 på tio,
så 953 = 3, och sedan lägger man till 1 för att det inte ska kunna bli 0.
Då 950/10 = 95 och 950 = 0.



Tillägg av detvanliga 2010-12-08 22:01

de resterande % kommer inte med i inlägget "/

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till detvanliga [Gå till post]:
Tack, det blev mycket bättre. ^^
Men tyvärr verkar det inte stämma riktigt.

Jag gjorde så här, för att spara mig lite tid:


Ett stycke C#-kod:

int main()
{
int r = GetRandomInt(1,10);
int a = GetRandomInt(2,9);
int b = GetRandomInt(3,8);
int c = GetRandomInt(4,7);

cout << "Random number: " << r << endl;
cout << "Random number: " << a << endl;
cout << "Random number: " << b << endl;
cout << "Random number: " << c << endl;

return 0;
}


Konstigt nog så fick jag 8 på c, trots att HIGH skulle varit 7.


Praise the sun!

-------
Visningsbild
P 30 Linköping Hjälte 4 577 inlägg
0

Svar till Phrosen [Gå till post]:
Den där for-loopen tycker jag är helt ologisk, förstår inte riktigt vad du försöker göra med den :S

Jag hette tidigare Ziron

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till Ziron [Gå till post]:
Jag stal den från någon i ett forum. :P

Praise the sun!

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0

Svar till Phrosen [Gå till post]:
använder du % i den där? alltså den koden detvanliga skrev

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till MisterD [Gå till post]:
Min nuvarande fullständiga kod ser ut så här:


Ett stycke C#-kod:

#include <iostream>
#include <cstdlib>
using namespace std;

int KeepValueOnScreen()
{
cin.clear();
cin.ignore(256, '
');
cin.get();
}

int GetRandomInt(int LOW,int HIGH)
{
int i, r;
srand (time(NULL));
r = rand()%HIGH + LOW;

return r;
}


int main()
{
int r = GetRandomInt(1,10);
int a = GetRandomInt(2,9);
int b = GetRandomInt(3,8);
int c = GetRandomInt(4,7);

cout << "Random number: " << r << endl;
cout << "Random number: " << a << endl;
cout << "Random number: " << b << endl;
cout << "Random number: " << c << endl;

KeepValueOnScreen();
return 0;
}



Praise the sun!

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
Svar till Phrosen [Gå till post]:
kk, fick värdet 10 på c då. du kan inte skriva 7 om du vill slumpa fram max 7 för resten blir inte sju



Tillägg av MisterD 2010-12-08 22:15

äsch fan var pro på det här förut men har fan glömt bort allt.

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till MisterD [Gå till post]:
Jag vill att r,a,b och c ska ha olika förutsättningar. -Hur gör jag för att fixa detta?
Men det verkar som alla ärver den som kommer först, dvs r (1 - 10).

Praise the sun!

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
har du skrivit fel på raden:


cin.ignore(256, '
');

eller vafan varför bryts den mitt i? vill du ignore'a radbyte? skriv då
istället 'n utan ' mellan backslash och n. gick inte att skriva utan för då försvann det bara

Tillägg av MisterD 2010-12-08 22:18

ska bara tanka en kompilator då onlinekompilatorn jag hittade sög.

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till MisterD [Gå till post]:
Den bryts för att Hamsterpaj's code-taggar inte stöder '
'.
Och nej, KeepOnScreen gör så att kommandotolken inte stänger sig förrän jag tryckt på enter.

Praise the sun!

Grepolis
Visningsbild
Hjälte 1 384 inlägg
0
Läs denna..den är på svenska och väldigt enkel att förstå..

Om du läser hela kommer du ha grundläggande kuunskaper :)

jag har läst den där och jag fattar den väldigt bra(Är bara 14 år)

På 3:e sista kapitlet är det "slumptal" (Random) läs den :)

Trolololo

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0

Svar till Phrosen [Gå till post]:
haha märkte det själv,

Ingen status

Grepolis
Visningsbild
Hjälte 1 384 inlägg
0
1.
2.
#include<iostream>
3.
#include<ctime>
4.
5.
using std::cout;
6.
using std::cin;
7.
using std::srand;
8.
using std::rand;
9.
10.
int main ()
11.
{
12.
srand(time(NULL));
13.
14.
int iSlumptal;
15.
iSlumptal = rand() % 6 + 1
16.
17.
cout << "Ett slumptal tal: " << iSlumptal;
18.

19.
return 0;
20.
}




den skriver ut ett random tal..jag tror det är 1-10 för jag har aldrig fått nått högre iaf :)

Trolololo

detvanliga
Visningsbild
Hjälte 381 inlägg
0
inte min dag.. vänta lite..

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till detvanliga [Gå till post]:
Det där verkar vara ungefär samma som förut. Iallafall av resultaten att döma. :P

Det funkar, men den ärver fortfarande det första värdet. (1,10).
-Så om andra värdet vore (11,20) så skulle det inte funka alls.

Praise the sun!

detvanliga
Visningsbild
Hjälte 381 inlägg
0
int GetRandomInt(int LOW,int HIGH)
{
int r = 0;

r = ( rand()%( HIGH - LOW ) ) + LOW;

return r;
}


men tänk på att srand(time(0) ); inte borde vara i den funktionen, kanske i mainloopen.

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till detvanliga [Gå till post]:
Jag ska prova att flytta om srand lite, och se om det gör någon skillnad.
Jag vet faktiskt inte hur den fungerar. :P
(Vad är time och 0 och allt det där..)

Praise the sun!

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till Phrosen [Gå till post]:
rand() läser olika siffror som ur en bok ur ett minne ur datorn typ,
och den börjar alltid från samma ställe och läser, så du kommer alltdi att få samma siffror om du inte startar om datorn mellan de gånger du kör.

Så srand() sätter vilken position den ska börja läsa ifrån, på det viset så börjar den inte alltid läsa från position 0 varje gång.

time(0) returnerar en int med som är beroende av tiden, och tiden ändras ju hela tiden så då kommer rand() börja läsa från olika plattser varje gång beroende på vilken tid det är :)

Så igentligen så är siffrorna du får från rand() inte slumpade, det finns t.ex kanske större chans att få en etta gemfört med en femma beroende på hur datan den läser ser ut

Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till detvanliga [Gå till post]:
Vad skulle hända om jag gjorde så här:

int r = GetRandomInt(10,4);

-Dvs sätta LOW > HIGH.

Praise the sun!

detvanliga
Visningsbild
Hjälte 381 inlägg
0
Men om du vill lära dej C++ så se till att ALDRIG copy/pasta, då du inte lär dej något på det. När jag själv lärde mej så antecknade jag allt jag såg och har nu två riktigt ( menar det! ) riktigt långa text dokument där jag har dokumenterat allt jag lärde mej med exempel osv. Ett mycket bra sätt att memorera på och så.

Men man får ju inte glömma att koda heller. En bra sida med förklaringar till alla funktioner i c++ har du här: " http://cplusplus.com/"

Men kopiera alldrig igen :) Och tänk igenom hur koden du fick nu igentligen funkar och så.

Ingen status

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till Phrosen [Gå till post]:
Haha, det får du lista ut själv ;) men ett lätt sätt att ta sej igenom det problemet är väll att använda lite if statements.

typ såhär i lite psuedokod, då du får något att jobba med :P :

om LOW är mer än HIGH
byt plats på de båda


Ingen status

Phrosen
Visningsbild
P 37 Karlstad Hjälte 7 668 inlägg
Trådskapare
0

Svar till detvanliga [Gå till post]:
Vad menas med psuedokod?

Praise the sun!

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till Phrosen [Gå till post]:
psuedokod = typ som en ritning till en kod, psuedokod ser ut så här t.ex:

uppdatera alla fiender
gå igenom alla fiender
kolla om fienden är innanför skämen
måla fienden på skärmen

Så det är som en ritning ja, som du ser ovan är det en lätt psuedokod för hur man skulle kunna hantera fiender, och det som är så bra med psuedokod är att man inte behöver vara prgorammerare för att förstå den, men att genomföra koden är ju en annan femma.

Så innan man börjar med att programera något jätte advancerat så kanske man borde skriva hur man tänker göra i psuedokod? Så programmerar man bara efter den.

Men det absolut bästa är att vilket språk du än programmerar i så funkar ju samma psuedokod :)

Ingen status

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0

Svar till Phrosen [Gå till post]:
Du skriver vad programmet ska göra med vanlig svenska eller engelska. När du är klar med det är det bara att översätta till kod

Ingen status


Forum » Datorer & IT » Webbutveckling & Programmering » Fråga om c++

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons