Cum stochez intr-un int mai multe numere sau ceva gen
Last Updated: Oct 05 2018 21:05, Started by
maxb2000
, Oct 05 2018 19:12
·
0
#1
Posted 05 October 2018 - 19:12
Buna seara,
Am o mica nelamurire cu urmatorul cod: https://hastebin.com/unodotarom.cpp Cum as putea in Student[i].note sa stochez mai multe note ? Gen sa fie Student[1].note sa aiba 4,5,6,9 etc.. ? Nu am prea multa experienta cu C++ dar am nevoie de ceva de genul Edited by maxb2000, 05 October 2018 - 19:13. |
#2
Posted 05 October 2018 - 19:19
folosesti un array / sir de numere (note)
Edited by MarianG, 05 October 2018 - 19:19. |
#3
Posted 05 October 2018 - 19:21
maxb2000, on 05 octombrie 2018 - 19:12, said:
Buna seara, Am o mica nelamurire cu urmatorul cod: https://hastebin.com/unodotarom.cpp Cum as putea in Student[i].note sa stochez mai multe note ? Gen sa fie Student[1].note sa aiba 4,5,6,9 etc.. ? Nu am prea multa experienta cu C++ dar am nevoie de ceva de genul |
#4
Posted 05 October 2018 - 19:22
ar fi o inginerie dar numarul de note este limitat de MAX_INT
Edited by MarianG, 05 October 2018 - 19:23. |
#5
Posted 05 October 2018 - 19:26
În primul rând notele le-aș face float.
maxb2000, on 05 octombrie 2018 - 19:12, said:
Cum as putea in Student[i].note sa stochez mai multe note ?
|
#6
Posted 05 October 2018 - 19:28
ccdsah, on 05 octombrie 2018 - 19:21, said:
note in engleza e singular. ala nu stocheaza decat o singura nota. Prin absurd daca ai vrea sa stochezi intr-un singur int mai multe note ai putea: Sa zicem ca fiecare student are 4 note: romana, matematica, engleza, franceza, de valoare intreaga 1..10. Aloci fiecarei note cate doua cifre > integerul va avea 7-8 cifre, dar te complici |
#7
Posted 05 October 2018 - 19:29
#8
Posted 05 October 2018 - 19:32
si daca folosesc o singura cifra si trec doar zero se supara cineva ?
*ps intregul trebuie sa unsigned Edited by MarianG, 05 October 2018 - 19:32. |
#9
Posted 05 October 2018 - 19:40
Cred ca folosesc asta: float note[20];
Mi se pare simplu si momentan nu ma intereseaza sa optimizez codul. La pointeri nu am inteles utilitatea lor gen iti arata adresa de memorie si poate ai nevoie de lucruri de genul dar eu nu vad unde si de ce )) |
#10
Posted 05 October 2018 - 19:43
se optimizeaza memoria folosita, iar codul nu e extraordinar de greu
|
|
#11
Posted 05 October 2018 - 19:47
Studiaza operatorii pe biti.
Crezi un int cu valoare zero, apoi alte variabile int cu notele. Nu-ti face griji pentru nota zece pentru ca trebuie sa folosesti musai 4 biti si deci poti stoca 16 numere de la 0 la 15. Intr-un int de 32 de biti poti stoca 8 note. Pui nota intr-un int si apoi folosesti shift pe biti << ca sa-i muti 4,8,16 pozitii. Dupa ce studiezi operatorii pe biti inclusiv AND si OR poate te lamuresti. |
#12
Posted 05 October 2018 - 20:06
Se mai poate folosi baza 11 de numerotatie si atunci pe un unsigned int (32-biti) incap 9 note, avand in acelasi timp si notele 10 si 0 (ultima pentru chiul de la extemporal …). Pe un long long (64-biti) incap chiar 18 note.
|
#13
Posted 05 October 2018 - 20:16
10 este o problema doar daca este prima nota, in rest, toate notele ocupa fix o cifra
iar pentru ca pe moment nu ne inteseaza ordinea notelor, zerourile se pot muta la final, sags, on 05 octombrie 2018 - 20:06, said: si 0 (ultima pentru chiul de la extemporal …). Edited by MarianG, 05 October 2018 - 20:15. |
#14
Posted 05 October 2018 - 20:39
Daca vorbim doar de note, 4, 5, 6, 8, nu si de numar de repetitii atunci e simplu. Fiecare nota e reprezentata de un bit si doar de un bit si atunci foloseste doar 11 biti din int. Daca ai o nota bitul respectiv devine 1, daca nu ai nota atunci bitul e 0,
Exemplu: 4, 6, 7, 9, 10 sunt notele, 00000000000000000000011011010000 va fi reprezentarea binara a intregul lui. 1744 fiind in baza 10. |
#15
Posted 05 October 2018 - 21:04
Buna observatia colegului @MarianG cu numarul de note. Chiar cand e codificat in baza 11 pe un unsigned int, el tot pare necesar ca altfel nu se poate sti cu cati de 0 incepe sirul (sau cati de 0 sunt la sfarsit, depinde cum codifici).
Insa a stoca (separat) numarul de note inseamna o variabila suplimentara, deci mai mult decat cei 32 biti ai unui unsigned int. De aici intrebarea: cate note 0…10 poti stoca strict in 32 de biti? Eu zic ca 9, dar codificarea e mai complicata:
|
|
#16
Posted 05 October 2018 - 21:05
N-are sens folosirea bazei 11 cat timp nota 0 e invalida.
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users