Zdar,
chcem spravit program(resp. funkciu) ktory by prevadzal z binarnej do decimalnej sustavy a na to potrebujem vstupne cislo rozdelit na cislice. Teda napr. 1011 rozdelit na 1,0,1,1. Ako to spravim? Je na to nejaka funkcia?
Fórum › C / C++
Rozdelenie int na cislice
To entity : Tak to číslo nenačítej jako číslo ale jako řetězec pak budeš mít v tom řetězci na indexu I znak 0 nebo 1. A pokud je nějakej důvod proč to má být číslo na vstupu, tak postupným dělením 10. a za desetinou čárkou budeš mít vždy to poslední číslo.
To don_Dominique : delit deseti necelociselne a pracovat s des. carkou je hodne hloupy napad
To entity : ty funkce se jmenuji % a /. C%S ti ziska posledni cislici C v soustave o zakladu S, a C/S ti da cislo C s odtrzenou posledni cislici... tedy jednoduchy zpusob jak prevest cislo do retezce obsahujici cifry decimalni soustavy je for(i=0;C;){retezec[i]='0'+(C%10);C/=10;}
To tmi : a kdo tady říkal že to musí načíst jako INT? (napsal jsem číslo, číslo neznamená automaticky integer) Sice jsem to nenapsal, ale tohle snad každému dojde ;-)
To don_Dominique : Hovori ti nieco strojovy epsilon (ci tak nejak sa tomu hovori) - maximalny rozsah chyby pri ukladani realneho cisla .. v skratke, za urcitych okolnosti je 5.0 a 4.99999(to kolko 9 tam je uz zalezi od systemu) to iste - a 0 a 9 je sakra rozdiel. Ak clovek realne typi skutocne nepotrebuje je lepsie sa im vyhybat.
Sam som tymto bugom raz trpel.
koukam trochu offtopic..
pokud nacita binarni cislo ze souboru nebo klavesnice, neni vubec problem brat to znak po znaku.
odecte se ascii hodnota '0' a je z toho opravdova 0/1
k cemu se tu probira ze v C 2.0-1.0 != 1.0 ?
To don_Dominique : prevadet cisla s plovouci radovou carkou mezi soustavami ma takove neprijemne vlastnosti jako treba nekonecne mnoho cislic, takze bych ho moc nedoporucoval :). Sice nikdo nepsal, ze se pouziva integer, ale snad kazdemu kdo rozumi vnitrni reprezentaci cisel dojde ze float typy tady fakt nemaji smysl (i kdyz by mel na vstupu float cislo, mel by rozhodne lepsi nenacitat ho jako float protoze by mu tam vznikla chyba prevodem do dvojkove soustavy s konecnym poctem cislic)
To Anonymní uživatel , To tmi : Ano chyby v realných číslech dobře znám, dokonce jsem z toho maturoval :-D . Proto jsem první napsal řešení se stringem. Osobně bych to přes desetinná čísla neřešil, ale pokud se dobře pamatuju, tak jsme to tak na střední jednou řešily v pascalu a fungovalo to!
Sergei << vdaka
Mam jeden problem a nechcem kvoli tomu zakladat nove vlakno tak to hodim sem
int array_size, input= 4;
char array[array_size];
array[array_size-1]= input% 2;
problem je v tom ze do array[array_size-1] sa nic nepriradi. Typ char by mal predsa zvladat aj jednociferne cisla.
V array_size máš bordel - mne to padne!!
#include <stdlib.h>
#include <stdio.h>
int main(void) {
int array_size = 29, input= 4;
char array[array_size]; // char array[-29]; !!
array[array_size-1]= input% 2;
printf("%d", array[array_size-1]);
return EXIT_SUCCESS;
}
To entity : a jak poznas ze se do array[array_size -1] nic nepriradi? ty jsi se koukal na preklad do instrukci ci co? :). a nebo pro to ze je array[array_size - 1] == 0? Napises-li array[array_size-1] = input%2; tak pro input == 4 to docela ocekavatelne bude 0...
typ char dokonce zvlada i dvouciferna cisla. on zvlada dokonce i 7-ciferna cisla, ale v binarni soustave :).
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Graphics2D .create(int, int, int, int) - problém — založil Havel
Výpočet pí, velká čísla, long int / int — založil Libor
Pole záznamů (každý String, int, int, ...) — založil MpPozor
Funkce - desítková číslice — založil Counter
Moderátoři diskuze