Funktioner i C-miniräknare

Här diskuteras programmering och utveckling
Aluhuru
Inlägg: 34
Blev medlem: 26 apr 2007, 18:46
OS: PCLinuxOS
Ort: Hallstahammar

Funktioner i C-miniräknare

Inlägg av Aluhuru »

Hejsan!
Jag håller just nu på med att försöka göra en miniräknare i C, där alla räknesätt och in-/utmatningen av talen ska anropas från main(). Men jag kan inte komma på hur jag ska formulera in-/utmatningsfunktionen, för som sagt kan väl return bara retunera 1 värde och inte två styckna? ex. return input1, input2;.
Kan någon komma på en bra lösning, på vad jag kan stoppa in i inmatning och utmatningsfunktionen?

Kod: Markera allt

#include <stdio.h>
int inmatning (int forstaTalet, int andraTalet );
int addition (int forstaTalet, int andraTalet);
int subtraktion (int forstaTalet, int andraTalet);
int multiplikation (int forstaTalet, int andraTalet);
int division (int forstaTalet, int andraTalet);
int utmatning (int forstaTalet, int andraTalet);

int main(void)
{
    char op;
    printf("Valkommen till miniraknaren.\n");
    //mata in ett tal per rad -  funktionsanrop
    
    scanf("%c", &op);
    switch(op)
    {
    case '+': 
    {
         int addition(int forstaTalet, int andraTalet); 
         break;     
    }
    
    case '-':
    {
    int subtraktion(int forstaTalet, int andraTalet); 
    break;
    }
    
    case '*' :
    {
        int multiplikation(int forstaTalet, int andraTalet);
          
    }
    case '/' :
    {
          int division(int forstaTalet, int andraTalet);
    }
    
    default:
    {
        printf("Felaktig raknat");
    }
    }
         //Utmatning på skärmen funktionen
         int utmatning(int forstaTalet, int andraTalet);
    return 0;
}

int inmatning (int forstaTalet, int andraTalet)
{
  
}

int addition(int forstaTalet, int andraTalet)
{
     return forstaTalet + andraTalet;
}
int subtraktion(int forstaTalet, int andraTalet)
{
     return forstaTalet - andraTalet;
}

int multiplikation(int forstaTalet, int andraTalet)
{
     return forstaTalet * andraTalet;
}

int division(int forstaTalet, int andraTalet)
{
     return forstaTalet / andraTalet;
}

int utmatning (int forstaTalet, int andraTalet)
{
    
}
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

SV: Funktioner i C-miniräknare

Inlägg av gasol »

Utmatning borde väl inte behöva returnera något värde alls, eftersom den bara ska skriva ut något på skärmen.

Inmatnings problemet kan lösas på många sätt, första sättet (bäst)

Ta in pekare som argument och tilldela värdet på dessa.
anropa denna funktion så här:

Kod: Markera allt

inmatning(&forstaTalet, &andraTalet);

Kod: Markera allt

void inmatning (int *forstaTalet, int *andraTalet)
{
   *forstaTalet = nånting; 
   *andraTalet = nåt_annat; 
}



Ett annat sätt, returnera en pekare till dina 2 tal i en array. (Glöm inte att köra free på returnvärdet sedan)

Kod: Markera allt

int *inmatning ()
{
    int *tal;

    tal = malloc(sizeof(int) * 2);

    tal[0] = nånting;
    tal[1] = nåt_annat;
  
    return tal;
}
Ett sista sätt är att ha globala variabler (dålig lösning)

Kod: Markera allt

int tal1, tal2;

void inmatning ()
{
   tal1 = nånting;
   tal2 = nåt_annat;
}
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Skriv svar

Återgå till "Programmering och webbdesign"