Avatar billede zaym01 Nybegynder
14. maj 2004 - 20:12 Der er 6 kommentarer og
1 løsning

Kritik af kode

Hej

  I stedet for at sidde og glo på brylluppet gav jeg mig selv en udfordring der lød: Lav et program der finder tværsummen af en int. Mit løsningsforslag endte med:

#include <iostream>
#include <cstdlib>

using namespace std;

int dig_add(int); // Funktion til at finde tværsummen af en int variabel

int main()
{
    int nr; // Brugeren input som der skal findes tværsummen af
   
    cout<<"Give me a number"<<endl;
    cin>>nr;
   
    if(nr<0) // Sikre at programmet altid arbejder videre med et positivt tal
    {
        nr=nr*-1;
        cout<<"The number has to be above 0 so i asume you ment: "<<nr<<endl;
    }
   
    while(nr>=10) // Gør at programmet bliver ved så tværsummen kun bliver på 1 cifer
    {
    nr=dig_add(nr);
    }
   
    cout<<"The diggits' sum: "<<nr<<endl;   
   
    system("pause");
    return 0;
}

int dig_add(int nr)
{
    int dig_sum=0; // Tværsummen
    int nr_dig=0;  // Antal cifre
    int diggit;    // Midlertidig variabel til det ciffer i nr programmet arbejder med


   
    for(int count=1, ten=10; (ten/10)<=nr; count++, ten=ten*10)
    {
        diggit=(nr%ten)/(ten/10);
        nr=nr-diggit;
        dig_sum=dig_sum+diggit;
    }
   

    return dig_sum;

}

  Egentlig vil jeg bare gerne have et par kommentarer til min kode. Gode ting og ting der vil kunne gøres bedre.
Avatar billede arne_v Ekspert
14. maj 2004 - 20:17 #1
dig_add må kunne laves nemmere:

int dig_add(int nr)
{
  int dig_sum = 0;
  int tmp = nr;
  while(tmp > 0)
  {
      dig_sum += (tmp % 10);
      tmp /= 10;
  }
  return dig_sum;
}
Avatar billede zaym01 Nybegynder
14. maj 2004 - 21:46 #2
arne v -> Findes der nogen steder hvor man kan læse om den slags teknikker, som du eksempelvis brugte til at korte dig_add ned?
Når man kigger i dine svar har du ofte en løsning der er en del linier kortere end originalen.
Avatar billede arne_v Ekspert
14. maj 2004 - 21:51 #3
Det er nok mest et spørgsmål om erfaring.

Jeg har kodet i C i 15 år.
Avatar billede arne_v Ekspert
14. maj 2004 - 21:51 #4
Man kunne iøvrigt have sparet tmp, men det synes jeg ikke vile være pænt.
Avatar billede arne_v Ekspert
14. maj 2004 - 21:52 #5
Hvis du vil "videre" med C/C++ programmering så kig efter bøger om emner som:
  - effektiv C/C++ programmering
  - design patterns
  - algoritme teori
Avatar billede zaym01 Nybegynder
14. maj 2004 - 22:05 #6
ok kigger jeg lige lidt på. Gider du lægge et svar?
Avatar billede arne_v Ekspert
14. maj 2004 - 22:07 #7
svar
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