Avatar billede coldermars Nybegynder
22. december 2005 - 11:56 Der er 9 kommentarer

længde af int variable

Hvordan finder man størrelsen af en int variable? med andre ord hvordan finder man ud hvor meget den fylder på skærmen. dvs. antallet af tal i variablen.

kan en string variable konverteres til en int eller double? hvordan? med andre ord kan tal indlæst i en string variable konverteres til int eller double? hvordan?
Avatar billede arne_v Ekspert
22. december 2005 - 12:21 #1
du kan finde antal decimale tegn i en int ved enten at konvertere den til en streng og
så tage længden af den eller ved en simpel matematisk beregning (int)log10(v)+1 eller
med en kæmpe nested if sætning
Avatar billede arne_v Ekspert
22. december 2005 - 12:21 #2
med hensyn til konvertering så læs http://www.eksperten.dk/artikler/143
Avatar billede coldermars Nybegynder
22. december 2005 - 17:41 #3
hvilken standard header er log10 defineret i?
Avatar billede coldermars Nybegynder
22. december 2005 - 17:46 #4
#include <math.h>
#include "kantkvad.h"

using std::log10;

int kantl(int a)
{
    int k = (int)(log10(a)+1);
    return k;
}

int kvadl(int a)
{
    int k = (int)(log10(a*a)+1);
    return k; 


----------------------------------
jeg har fundet headeren math.h, men det virker stadig ikke, hvad er der galt?
Avatar billede arne_v Ekspert
22. december 2005 - 17:58 #5
#include <iostream>
#include <cmath>

using namespace std;

int len(int v)
{
    return (int)log10((double)v)+1;
}

int main()
{
  cout << len(123) << endl;
  cout << len(77777) << endl;
  return 0;
}
Avatar billede arne_v Ekspert
22. december 2005 - 18:00 #6
log10 er overloaded i C++
Avatar billede arne_v Ekspert
22. december 2005 - 18:00 #7
og hvis du skal håndtere negative:

#include <iostream>
#include <cmath>

using namespace std;

int len(int v)
{
    if(v > 0)
        return (int)log10((double)v)+1;
    else
        return 1+len(-v);
}

int main()
{
  cout << len(123) << endl;
  cout << len(77777) << endl;
  cout << len(-1) << endl;
  return 0;
}
Avatar billede emileej Nybegynder
09. januar 2006 - 15:08 #8
Lidt pænere C++?:

#include <stringstream>
#include <iostream>

int main(int argc,char *argv[])
{
    std::stringstream ss;
    ss << -12367;
    std::cout << ss.str().length();
}
Avatar billede arne_v Ekspert
09. januar 2006 - 15:52 #9
metoden er jo nævnt tidligere - spørger var bare mere interesseret i log10 metoden
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