---
title: "komprimera kod"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/110667-komprimera-kod"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "danii"
published: "2004-09-03T17:41:34.000Z"
updated: "2004-09-05T20:09:00.000Z"
replies: 6
views: 281
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/110667-komprimera-kod"
---

# komprimera kod

## #1 — danii, 2004-09-03T17:41Z

Hur kan denna kod förbättras?
Jag skulle även vilja veta vad som är så viktigt med &. Varför funkar inte koden utan &?

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

void omvandling(int& h, int& min, int& sec);

int main(){
    int h = 0;
    int min = 0;
    int sec = 300;
    int t;
    
    omvandling(h, min, sec);
    
    cout << h << "h " << min << "min " << sec << "sec";
    
    cin >> t;
    return 0;
}    

void omvandling(int& h, int& min, int& sec){
    
    h = sec/3600;
    min = (sec%3600)/60; 
    sec = sec%60;
}
```

Permalänk: https://www.webforum.nu/p/110667

## #2 — Mc Fetto, 2004-09-03T17:45Z

För att du skickar in variablerna som referenser till minnesplats och de ändras i funktionen "omvandling" tar du bort & så finns det ingen referens och då spelar det ingen roll att du manipulerar dem i din funktion (de finns endast i funktionen då).

Permalänk: https://www.webforum.nu/p/1426781

## #3 — danii, 2004-09-03T17:50Z

med andra ord så går det att manipulera/ändra ngt när man använder & medans man inte kan rucka variabeln om man inte har med &?

Permalänk: https://www.webforum.nu/p/1426784

## #4 — luna, 2004-09-03T18:06Z

så kan man säga...

när du skickar in en referens i en funktion så är det samma objekt du manipulerar som det du skickar in.

om du inte skickar in en referens så får du en kopia av objektet som enbart "lever" så länge funktionen körs.

Permalänk: https://www.webforum.nu/p/1426790

## #5 — Mc Fetto, 2004-09-03T18:39Z

> **danii skrev:**
>
> med andra ord så går det att manipulera/ändra ngt när man använder & medans man inte kan rucka variabeln om man inte har med &?

Precis, vill du inte ha referenser till variabler (minnesplats), så måste du skapa funktioner som returnerar värdet och som du då tar hand om i funktionsanropet:

```

int main(){
 
    int h = 10;
    int x;
    x =   omvandling(h);

    return 0;
}  

int omvandling(int val){
    val = val - 5;
    return val;
}
```

Dåligt exempel kanske men jag är trött..
x kommer nu ha värdet 5 efter funktionsanropet :)

Permalänk: https://www.webforum.nu/p/1426804

## #6 — danii, 2004-09-05T12:11Z

Funkar inte & på fält?

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

void statistik(int falt[]);
void mata_in(int& falt[]);

int falt[100];

int main(){
    
    int b;
    int t;
    
    do{
    cout << endl << "Meny\n___________________________" << endl;
    cout << "1 Presentera Statistik\n2 Mata in nya uppgifter\n3 Avsluta" << endl;
    cin >> b;
    
    switch(b){
        case 1:
            statistik(falt);
            break;
            
        case 2:
            mata_in(falt);
            break;
            
        default:
            break;
            
        
    }    
    }
    while(b != 3);    
    
    cin >> t;
    return 0;
}

void statistik(int falt[]){
    int i = 0;
    int b;
    int f;
    
    while(falt[i] > 0){     
        b += falt[i];
        i++;
    }
            
    f = (b == 0) ? 1 : i;
    cout << endl << "Antalet anst\x84llda : " << i << endl << "Medell\x94nen : " << b/f << endl;
}

void mata_in(int& falt[]){
    
    bool a = true;
    int c;
    int d;
    int j = 0;
    
    while(a){
        cout << "Mata in den anställdes lön : ";
        cin >> d;
        
        if(d == 0){
            a = false;
        }
        else{
            while(falt[j] > 0){
                    j++;
            }
            falt[j] = d;
        }
    }
}
```

Permalänk: https://www.webforum.nu/p/1428425

## #7 — Sang-drax, 2004-09-05T20:09Z

> **danii skrev:**
>
> Funkar inte & på fält?

Jo då, men då skriver man

```
void minFunktion( int (&falt)[10] );
```

 
Dock är fält lite speciella och du kan ändra i dem även om du skriver

```
void minFunktion(int falt[]);
```

Permalänk: https://www.webforum.nu/p/1428637

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/110667-komprimera-kod
