Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Conversie de baze in C++
Last Updated: Nov 05 2013 21:25, Started by
raiksaa
, Oct 09 2010 13:39
·
0
#1
Posted 09 October 2010 - 13:39
Buna ziua.
Am urmatoarea problema: Se citeste o succesiune de cifre de 1 si 0, prima fiind 1.Aceasta succesiune are semnificatia unui numar in baza 2.Sa se afiseze acest numar in baza 10. Este prima data cand lucrez cu baze, si nu inteleg foarte bine algoritmul de conversie. Daca poate cineva sa imi explice aproximativ implementarea sau algoritmul, as fi foarte recunoscator. Multumesc anticipat. Later edit: Cam asta ar fi ce am incercat eu pana acum: #include<iostream.h> void main () { long int baza2,n,nr,i; nr=0; i=0; cout<<"baza2=";cin>>baza2; while(baza2>=0){ n=baza2%10; i++; baza2=baza2/10; nr=nr+n*2^i;} cout<<"nr="<<nr; } EDIT 2: Nu stiu ce cautau stdio si math acolo >_< . EDIT 3: In while era baza2, nu x. Iertare dar am 6 ore de programare pe ziua de azi, nu mai vad bine. Edited by raiksaa, 09 October 2010 - 13:55. |
#2
Posted 09 October 2010 - 14:15
L.E.
#include <conio.h> #include <stdio.h> #include <math.h> ........ while(nr) { if((nr%10==0)||(nr%10==1)) // security check -- in cazul in care utilizatorul greseste formatul numerelor tastate -- ex 1201 -- n+= (nr%10) * pow(2,aux++); nr/=10; } }se poate adapta usor pentru orice baza. 2^i nu este ridicare la putere, ci XOR Edited by MarianG, 09 October 2010 - 14:38. |
#4
Posted 09 October 2010 - 14:54
Presupunand ca s-au citit n cifre (numarul in baza 2) intr-o matrice b2[n], numarul in baza 10 (b10) va fi cam asa:
i=0; b10=0; while(i<n) { b10+= b2[i]*2^i; i++; { (cu mentiunea ca nu-mi asum nici o raspundere ... si ca nr e pozitiv, ca altfel mi se pare ca ultimul bit, din sanga, e de semn, din ce-mi amintesc) 0 1 1 0 1 1 (numarul 27) 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 (- se aduna astea) (Vad ca pe Wiki dau si cum e cu numere in baza 2 cu virgula, asta n-o stiam pana acum.) ! am pus ^ ca fiind ridicare la putere, dar nu e, scuze de greseala. Cred ca trebuie pow() in loc... Edited by Yoda2009, 09 October 2010 - 15:07. |
#5
Posted 09 October 2010 - 15:02
Yoda2009, on 9th October 2010, 15:54, said: Presupunand ca s-au citit n cifre (numarul in baza 2) intr-o matrice b2[n], numarul in baza 10 (b10) va fi cam asa: i=0; b10=0; while(i<n) { b10+= b2[i]*2^i; i++; { (cu mentiunea ca nu-mi asum nici o raspundere ... si ca nr e pozitiv, ca altfel mi se pare ca ultimul bit, din sanga, e de semn, din ce-mi amintesc) 0 1 1 0 1 1 (27) 2^5 2^4 2^3 2^2 2^1 2^0 - se aduna astea (Vad ca pe Wiki dau si cum e cu numere in baza 2 cu virgula, asta n-o stiam pana acum.) poate vector...nu matrice...ca aia e bidimensionala...aici e unidimensionala |
#6
Posted 09 October 2010 - 15:04
#7
Posted 09 October 2010 - 15:06
#8
Posted 09 October 2010 - 15:10
vorbesti romaneste sau codat, cand spui cuvant te referi la STRING sau la WORD?
|
#9
Posted 09 October 2010 - 15:12
#11
Posted 09 October 2010 - 15:19
MarianG, on 9th October 2010, 16:14, said: ce lungime (pe bit) are un numar? anyway, dupa cum ai scris tu programul ala, rezultatul ar trebui sa fie nr initial scris invers o sa incerc sa il fac diseara daca mai poti astepta nitel Edited by bluething, 09 October 2010 - 15:32. |
#12
Posted 09 October 2010 - 15:36
bluething, on 9th October 2010, 16:19, said: ce relevanta are intrebarea asta pt problema de mai sus? #include <conio.h> #include <stdio.h> #include <math.h> void main(void){ int x,b; float nr=0; printf("Lungimea Codului=");scanf("%d",&x); while(x) { b= getche()-48; if( (b==0) || (b==1)) nr+= b * pow(2,--x); else putch(8); } printf("\n%f",nr); getch(); } |
#14
Posted 09 October 2010 - 15:49
ca o fi greu sa-si schimbe, instructiunile pentru citere, si afisare
|
#15
Posted 09 October 2010 - 15:55
|
#16
Posted 09 October 2010 - 15:58
bluething, on 9th October 2010, 16:19, said: anyway, dupa cum ai scris tu programul ala, rezultatul ar trebui sa fie nr initial scris invers while(nr) { if((nr%10==0)||(nr%10==1)) // security check -- in cazul in care utilizatorul greseste formatul numerelor tastate -- ex 1201 -- n+= (nr%10) * pow(2,aux++); nr/=10; }tu ai inteles ce face nr%10 nr/=10nr%10 - citeste ultima cifra nr/=10 - sterge ultima cifra din numarul actual aux++ creste puterea cu trecerea fiecarui numar valabil. cum ai ajuns la concluzia ca trebuie sa afisez invers? |
#17
Posted 09 October 2010 - 15:59
#18
Posted 09 October 2010 - 18:27
@bluething mai mult derutezi oamenii decat sa ii ajuti la rezolvarea problemei.
Quote e evident ca o cifra trebuie introdusa, ca daca era un cuvant trebuia pusa biblioteca #include<string.h> Daca era un cuvant baza2 trebuia declarat de tip string. Din ce ai spus tu rezulta ca daca incluzi <string.h> automat citesti stringuri Quote anyway, dupa cum ai scris tu programul ala, rezultatul ar trebui sa fie nr initial scris invers Codul lui Marian e perfect corect, nu returneaza niciun numar invers. Quote asta e in pascal ?? eu nu vad pascal pe topicul asta.Presupun ca te refereai la C ca daca nu iti dai seama care e cod C si care e cod Pascal nu inteleg de ce dai sfaturi pe aria de programare. Ontopic: @raiksaa Codul tau era corect cu doua observatii. Trebuie sa incrementezi i dupa ce il folosesti, iar in c++ pentru ridicarea la putere se foloseste functia POW Edited by yonut_a, 09 October 2010 - 18:29. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users