infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Serban Cercelescu din Februarie 28, 2014, 14:25:42



Titlul: Numarare in baza 2
Scris de: Serban Cercelescu din Februarie 28, 2014, 14:25:42
Puteti cumva sa lasati o functie ce are ca parametru un vector ce contine {1, 0, 1, 1, 0, 1,} si returneaza succesorul sau in baza 2 (in cazul de fata, {1, 0, 1, 1, 1, 0})? Eu m-am impiedicat in "my spaghetti code" :oops:


Titlul: Răspuns: Numarare in baza 2
Scris de: Radu Szasz din Februarie 28, 2014, 16:16:24
Uite aici pasii:

1. Cauti primul bit de 0, incepand de la coada vectorului si in faci 1.
2. Toti bitii de pana la bitul respectiv ii faci 0.

E un for. Nu vad la ce te-ai putea incurca.


Titlul: Răspuns: Numarare in baza 2
Scris de: Serban Cercelescu din Februarie 28, 2014, 16:20:56
Pana la urma am rezolvat singur...
Cod:
#include <cstdio>
#include <cmath>
using namespace std;
int v[64];
int main()
{
    int e,j,i,k;
    v[64]=1;
    e=(int)pow((double)2,(double)20)-1;
    for(i=1;i<=e;i++){
        v[64]++;
        for(j=64;j>0;j--){
            if(v[j]>1){  <<<<<<<
                v[j]=0;
                v[j-1]++;
            }
        }
        for(j=1;j<=8;j++){
            for(j=1;j<=8;j++){
                printf("%d");
            }
        }
        printf("\n");
    }
    return 0;
}

Poti schimba acel numar (cel marcat) cu baza in care vrei sa numberi -1
Multumesc oricum SRadu


Titlul: Răspuns: Numarare in baza 2
Scris de: Radu Szasz din Februarie 28, 2014, 16:33:57
Citat
Poti schimba acel numar (cel marcar) cu baza in care vrei sa numberi -1

Ce e ala marcar? Credeam ca e stabilit ca vrem sa facem + 1 la un numar in baza 2...

Oricum, felicitari daca ti-a iesit.