Hei kaikki!
Ihan tässä pohdiskellessa juolahti mieleeni sellainen ohjelma jossa annetaan ensin luku ja sen jälkeen ilmoitetaan kuinka monta merkkiä luku oli pitkä, sitten kun aloin suunnitelmiani totetuttamaan niin menikin sormi suuhun, kun loppui taito ja ajatuksenjuoksu yhtäaikaa :)
Eli kuinka pitäisi tehdä sellainen int -laskuri joka laskee kuinka monta merkkiä on syötetty.
Esim.
Jos int iluku = 1234 niin sitten
int merkkienmaara olisi 4.
Onko tähän sitten vaikea lisätä sellaista toimintoa, joka tulostaisi esim. 2 -ensimmäistä merkkiä?
Kielenä käytän c:tä.
Hyvät joulut kaikille koodaajille! :)
Ihan tässä pohdiskellessa juolahti mieleeni sellainen ohjelma jossa annetaan ensin luku ja sen jälkeen ilmoitetaan kuinka monta merkkiä luku oli pitkä, sitten kun aloin suunnitelmiani totetuttamaan niin menikin sormi suuhun, kun loppui taito ja ajatuksenjuoksu yhtäaikaa :)
Eli kuinka pitäisi tehdä sellainen int -laskuri joka laskee kuinka monta merkkiä on syötetty.
Esim.
Jos int iluku = 1234 niin sitten
int merkkienmaara olisi 4.
Onko tähän sitten vaikea lisätä sellaista toimintoa, joka tulostaisi esim. 2 -ensimmäistä merkkiä?
Kielenä käytän c:tä.
Hyvät joulut kaikille koodaajille! :)
Vastaukset 4
Vanhimmat
tehdä laskuria.
int pituus;
pituus=(int)(1.0 log((double)syotetty_luku));
ja pituus muuttujaan tallentuu syotetty_luku muuttujan merkkien(numeroiden) määrä.
#include /* pow-funktio */
int i;
int ekat=2;
for (i=pituus-1;i>=pituus-ekat;i--)
printf("%d",(int)((syotetty_luku/pow(10,i))%10));
en testannut (pyöräytin ensin paperilla ja tein koodin perään), joten en mene virheistä takuuseen ;)
int n, laskuri = 0;
scanf("%d", &n);
do {
laskuri++;
} while ( (n /= 10) > 0);
printf("luvun pituus: %d\n", laskuri);
int luvunpituus_tulosta2ekaa (int luku, int tulostuspituus)
{
char s[50];
int len;
sprintf(s,"%d",x); /*luku merkkijonoksi*/
len = strlen(s); /*merkkijonon pituus*/
s[tulostuspituus] = 0;
printf("%s",s); /*tulosta 'tulostuspituus' ekaa merkkiä*/
return len;
}