Avatar billede 2903jb Nybegynder
27. september 2003 - 12:25 Der er 11 kommentarer og
1 løsning

program til omdannelse af binære tal

ok.. jeg er MEGET ny til C++ og sidder og leger lidt med nogle ting, er ved at prøve at lave et program der kan omdanne et binært talk til et almindeligt decimal tal, men som jeg sagde.. er jeg MEGET ny til det.. og nok også meget dårlig.. men ville gerne vide.. er der en kommando der kan se hvor langt det indtastede tal er?

og så kan i da også lige som om der er andre fejl, hvis i gider, jaja.. nu får i sikkert et billigt grin.. for det er sikkert noget juks

#include <iostream>
#include <string>
using namespace std;

main(){

int sum=0;
string f;
char i[100];
int n=0;
cout<<"write binary number"<<endl;
cin>>f;

f=i[];

while(n<100){
  if(a[n]==1){
  sum=2^n;
  n++;
  }
  else{
  n++;
  }
  cout<<sum<<endl;
}
}

på forhånd tak for hjælpen
Avatar billede arne_v Ekspert
27. september 2003 - 12:29 #1
Jeg lavede det her stykke kode til et andet spørgsmål
i foråret. Det konverterer mellem binær, decimnal og hex:

#include <stdio.h>

int indec()
{
  int res;
  printf("Enter decimal: ");
  scanf("%d",&res);
  return res;
}

int inhex()
{
  int res;
  printf("Enter hexadecimal: ");
  scanf("%X",&res);
  return res;
}

int inbin()
{
  int res,ix;
  char line[34];
  printf("Enter binary: ");
  scanf("%s",line),
  ix=0;
  res = 0;
  while(line[ix]!='\0')
  {
    res = res * 2 + (line[ix]=='1' ? 1 : 0);
    ix++;
  }
  return res;
}

void outdec(int v)
{
  printf("decimal = %d\n",v);
}

void outhex(int v)
{
  printf("hexadecimal = %X\n",v);
}

void outbin(int v)
{
  int i;
  printf("binary = ");
  for(i=0;i<sizeof(int)*8;i++)
  {
      printf("%d",(v >> (sizeof(int)*8 - i - 1)) & 1);
  }
  printf("\n");
}

int main()
{
  int v;
  v = indec();
  outdec(v);
  outhex(v);
  outbin(v);
  v = inhex();
  outdec(v);
  outhex(v);
  outbin(v);
  v = inbin();
  outdec(v);
  outhex(v);
  outbin(v);
  return 0;
}
Avatar billede 2903jb Nybegynder
27. september 2003 - 12:34 #2
det meget flot.. men kunne du evt forklare hvad den gør.. og den header fil du bruger... er det en standart en, som ligger i micrsoft, eller er det en du selv har lavet?
Avatar billede arne_v Ekspert
27. september 2003 - 12:38 #3
stdio.h er en standard header fil og vil være i alle compilere.
Avatar billede arne_v Ekspert
27. september 2003 - 12:40 #4
Funktionen inbin læser en streng som 101010101 ind og konverterer den til
integer.
Avatar billede 2903jb Nybegynder
27. september 2003 - 12:46 #5
ok.. har lige prøvet den.. og den virker jo fint nok.. men kunne du ikk lige skrive koden så den det kun er delen hvor man indtaster binære tal der er med, har ikk brug for at indtaste hex og decimal tal.. kun at konvertere fra binære tal
Avatar billede arne_v Ekspert
27. september 2003 - 12:50 #6
Det er jo meget nemt når det er struktueret på den måde det er:

#include <stdio.h>

int inbin()
{
  int res,ix;
  char line[34];
  printf("Enter binary: ");
  scanf("%s",line),
  ix=0;
  res = 0;
  while(line[ix]!='\0')
  {
    res = res * 2 + (line[ix]=='1' ? 1 : 0);
    ix++;
  }
  return res;
}

void outdec(int v)
{
  printf("decimal = %d\n",v);
}

int main()
{
  int v;
  v = inbin();
  outdec(v);
  return 0;
}
Avatar billede 2903jb Nybegynder
27. september 2003 - 13:06 #7
tusind tak for hjælpen.. det virker fint.. bortset fra at den fucker lidt med decimaltalene nå det binære bliver for stort
Avatar billede arne_v Ekspert
27. september 2003 - 13:18 #8
Max. 31 binære cifre.
Avatar billede arne_v Ekspert
27. september 2003 - 13:19 #9
Hvis din compiler understøtter 64 bit integers kan du lave en version
som understøtter det.
Avatar billede 2903jb Nybegynder
27. september 2003 - 19:45 #10
ved jeg ikk om den gør... jeg bruger borlands compiler version 551
Avatar billede 2903jb Nybegynder
27. september 2003 - 19:46 #11
og hvis den ikk gør.. hvilken compiler understøtter så 64 bit?
Avatar billede arne_v Ekspert
27. september 2003 - 19:54 #12
Jeg tror at den gør.

Prøv med
  __int64
som data type !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis