Sada je: 18 stu 2019, 16:48.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Pozdrav, imam cpp kod koji racuna iz binarnog u dekatski. Htio bih napraviti da konstantno mogu upisivati vrijednost i računati, a ne nakon izračuna da mi se konzola ugasi. Guglao sam i vidim da se radi preko do while petlje ali sam jos početnik i ne znam di bih to tocno ubacio u kod... Zna li netko? Hvala :hihi
Kod: Označi sve
#include <iostream>
#include <cmath>
using namespace std;

int main () {
    int unos;
    cout << "Unesi 4-znamenkasti binarni broj: " ;
    cin >> unos;

    if(unos / 10000 > 0) {
    cout << "Unos nije ispravan";
    }
    else if(unos%10>1 || (unos/10)%10>1 || (unos/100)%10>1 || (unos/1000)%10>1) {
    cout << "Koristi iskljucivo 1 i 0!";
    }
    else {
    int dec = 0;
    ((unos/1000)%10==1)?dec+=8:dec+=0;
   ((unos/100)%10==1)?dec+=4:dec+=0;
   ((unos/10)%10==1)?dec+=2:dec+=0;
   (unos%10==1)?dec+=1:dec+=0;
   cout<< "Dekatska vrijednost binarnog broja iznosi: " <<dec<<endl;

    }

    return 0;
    system ("pause");
}
Postovi: 23
Postovi: 23
Pridružen/a: 21 sij 2019, 00:54
Lokacija: Zagreb
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
Spol: M
OS: Win 10 Pro / Ubuntu
Ovo je modificirana verzija tvog koda tako da se ponavlja dok ne upišeš 2, a na 2 se prestane izvršavati:
Kod: Označi sve
#include <iostream>
#include <cmath>
using namespace std;

int main () {
  int unos, t;
  do{
    cout << "Unesi 4-znamenkasti binarni broj: " ;
    cin >> t;
    if(t == 2) break;
    unos = t;
    if(unos / 10000 > 0) {
      cout << "Unos nije ispravan";
    }
    else if(unos%10>1 || (unos/10)%10>1 || (unos/100)%10>1 || (unos/1000)%10>1) {
      cout << "Koristi iskljucivo 1 i 0!";
    }
    else {
      int dec = 0;
      ((unos/1000)%10==1)?dec+=8:dec+=0;
      ((unos/100)%10==1)?dec+=4:dec+=0;
      ((unos/10)%10==1)?dec+=2:dec+=0;
      (unos%10==1)?dec+=1:dec+=0;
      cout<< "Dekatska vrijednost binarnog broja iznosi: " <<dec<<endl;

    }

  } while(1);
  return 0;
  system ("pause");
}


Ovo ti je C program koji bilo koji dekadski broj (koji stane u int) pretvara u bilo koju bazu <=10. (Ne nosi se lijepo sa slučajevima kad je baza >10):

Kod: Označi sve
#include <stdio.h>

int dekbin(int a, int b){
   if(b<2){printf("nedozvoljen unos");return -2;}
   int ab=0;
   int c=0;
   int t;
   
   while(a!=0){
      t=a%b;
      a=a/b;
      int pot=1;
      for(int i=0;i<c;i++){pot*=10;}
      ab=t*pot+ab;
      c++;
   }
   return ab;
}

int main(void){
   int a, baza;
   scanf("%d %d", &a, &baza);

   printf("%d", dekbin(a,baza));

   return 0;
}


Ovo je program koji pretvara iz bilo koje baze <=10 u bazu 10 (dekadsku). Isto se ne nosi lijepo s rubnim slučajevima.
Kod: Označi sve
#include <stdio.h>

int dekbin(int a, int b){
   if(b<2){printf("nedozvoljen unos");return -2;}
   int ab=0;
   int c=0;
   int t;
   
   while(a!=0){
      t=a%10;
      a=a/10;
      int pot=1;
      for(int i=0;i<c;i++){pot*=b;}
      ab=t*pot+ab;
      c++;
   }
   return ab;
}

int main(void){
   int a, baza;
   scanf("%d %d", &a, &baza);

   printf("%d", dekbin(a,baza));

   return 0;
}


Na istu do-while foru kao u primjeru gore ih možeš modificirati da se izvršavaju do terminacije :)
Avatar
Site Admin
Postovi: 4411
Site Admin
Postovi: 4411
Pridružen/a: 07 ožu 2009, 17:00
Podijelio/la zahvalu: 98 puta
Primio/la zahvalu: 179 puta
Spol: M
OS: w10, ubuntu, macos
Hvala puno!
Postovi: 23
Postovi: 23
Pridružen/a: 21 sij 2019, 00:54
Lokacija: Zagreb
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
Spol: M
OS: Win 10 Pro / Ubuntu

Na mreži
Trenutno korisnika/ca: / i 1 gost.