Avatar billede wincompro Nybegynder
21. februar 2010 - 12:06 Der er 7 kommentarer

C++ Functions

Hvad er functions i c++ og hvad bruger man dem til?
Avatar billede michael_stim Ekspert
21. februar 2010 - 12:29 #1
Funktioner i C++ er som funktioner i alle andre sprog. Det er en stump kode der kan kaldes og dermed genbruges.
Avatar billede wincompro Nybegynder
21. februar 2010 - 12:45 #2
Kan du uddybe det lidt? :S
Avatar billede michael_stim Ekspert
21. februar 2010 - 12:58 #3
Hvis du f ex har en udregning du bruger meget, kan du lægge den i en funktion. Så kan man kalde den funktion med f ex forskellige parametre.

Denne her f ex (som er skrevet af arne_v), tager personnummer som indparameter og checker om det er gyldigt (kan man ikke mere, men bare som eksempel). Så i stedet for at opfinde den dybe tallerken gang efter gang, skriver man en funktion som kan kaldes med en linie.

#include <stdio.h>
#include <string.h>
#include <ctype.h>

static int ix[] = { 0, 1, 2, 3, 4, 5, 7, 8, 9, 10 };
static int c[] = { 4, 3, 2, 7, 6, 5, 4, 3, 2, 1 };

int isvalid(char *number)
{
    int i,d,m,y,temp;
    char buf[3];
    if (strlen(number) != 11)
    {
        return 0;
    }
    if (number[6] != '-')
    {
        return 0;
    }
    for (i = 0; i < 10; i++)
    {
        if (!isdigit(number[ix[i]]))
        {
            return 0;
        }
    }
    strncpy(buf,number,2);
    buf[2]='\0';
    d=atoi(buf);
    strncpy(buf,number+2,2);
    buf[2]='\0';
    m=atoi(buf);
    strncpy(buf,number+4,2);
    buf[2]='\0';
    y=atoi(buf);
    if (d > 31)
    {
        return 0;
    }
    if (m > 12)
    {
        return 0;
    }
    temp=0;
    for (i = 0; i < 10; i++) {
        temp = temp + c[i] * (number[ix[i]] - '0');
    }
    return ((temp % 11) == 0);
}

void test(char *s)
{
    printf("%s -> %d\n",s,isvalid(s));
}

int main()
{
    test("123456-1234");
    test("111111-1118");
    return 0;
}
Avatar billede michael_stim Ekspert
21. februar 2010 - 13:02 #4
Avatar billede wincompro Nybegynder
21. februar 2010 - 13:02 #5
Tak :D
Avatar billede jagdos Nybegynder
21. februar 2010 - 13:04 #6
fx

#include <iostream>
using namespace std;

void addition(int a, int b)
{
cout << a + b;
}

int main()
{
int a = 2, b = 2;

addition(a, b);
}

Det smarte er så at du kan blive ved med at kalde addition med forskelle variabler...
Avatar billede arne_v Ekspert
21. februar 2010 - 15:35 #7
Offtopic bemærkning: modulus 11 check af CPR numre kan ikke bruges længere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester