Hur ska jag lösa denna funktion? jag vill kunna ange 2 st tal och vända på dem, så a blir b, och b blir a... hur gör jag för att skriva ut båda? det funkar om jag vänder det som ni ser på de 2 swapsen längre ner, men måste gå att fina till det och förenkla det? Du måste ha klart för dig vad du ska göra. satt precis och läste om & grejen, ska se om jag kan få någon lösning på det! Yes. Ja men jag ska juh inte använda färdiga saker, jag försöker juh lära mig ;) Inte om du inte har gjort det som en template. Du får prova dig fram, och försöka lista ut vad som funkar och inte. har aldrig hållt på med templates, vet inte riktigt hur dom funkar eller hur dem ser ut <b>vet inte riktigt hur dom funkar eller hur dem ser ut</b> Läs alla inlägg, Martin: visste inte att detta var ett forum för svenska språket, har hela tiden trott att det handlade om c++ ? :Pswap funktion
#include <iostream>
using namespace std;
int swap(int a, int b)
{
int n = a;
a = b;
b = n;
return a;
}
int main()
{
int x,y;
cin >> x; cin >> y;
cout << swap(x,y) << swap(y,x);
system("pause");
return 0;
}
Sv: swap funktion
Du vill ta värdet i a och lägga i b, och samtidigt ta värdet i b och lägga i a.
Du inser då att du inte kan returnera _ett tal_, det kommer aldrig att funka.
Antingen måste du ändra variablerna a och b, eller så måste du returnera två tal.
Returnera två tal går enkelt i vissa språk; framför allt Matlab och funktionella språk. I C++ går det att returnera men är ganska fult vid första anblicken, och jävligt fult om du dessutom ska dela upp det direkt efter.
Så vad du vill göra är att byta plats på dem. Då måste du veta att
int swap(int a, int b)
innebär att a och b är privata inuti swap. Alla ändringar av variablerna är lokala.
Det enklaste sättet är att bara skriva så här:
void swap(int &a, int &b)
{
int n = a;
a = b;
b = n;
}
"&" betyder att a och b är samma variabel som skickades in.
Sen måste du ändra på utskriften, swap ska inte returnera något.Sv:swap funktion
någonting sånt här kanske?
#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
int n = a;
a = b;
b = n;
}
int main()
{
int a,b;
cin >> a; cin >> b;
swap(a,b);
cout << a << b;
system("pause");
return 0;
}
Sv: swap funktion
Några detaljer nu bara.
För det första är swap ypperlig för att göra som en template, vilket innebär att den funkar för andra typer än int.
För det andra så finns den redan i standardbiblioteket, med template, och funkar utmärkt.Sv:swap funktion
om jag tex har en vector eller array? skulle jag kunna byta en hel sådan mot en annan nu då?Sv: swap funktion
Sv:swap funktion
Sv: swap funktion
På ena stället skriver du "dom" och på det andra "dem"... Även om man får lära sig i skolan att inte skriva "dom", så är åtminstone "dom" mer korrekt än "dem" på båda platserna här. Mest korrekt hade varit att skriva "de" på båda ställena.Sv:swap funktion
<b>Ja men jag ska juh inte använda färdiga saker, jag försöker juh lära mig ;) </b>
När man försöker lära sig grunderna kan det vara bra att själv implementera grundläggande funktioner såsom swap.Sv:swap funktion