C++ Greška u programu.

poruka: 3
|
čitano: 1.060
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C++ Greška u programu.

Napravio sam program koji bi trebao prebaciti broj iz odabrane baze u dekadski sustav...

ali sve je radilo dok nisam zamjenija u switchu umjesto switchanja svih brojeva od 0-9 da koristi default u kojem koristi funkciju atoi(&x[i]); ...

a da ostale brojeve A,B,C,D,E,F switcha i zamjenjuje sa 10,11,12,13,14,15 .......

 

Tako da program radi ako se upise npr. 0.ADF u bazi 16 ...pretvori ga normalno u 0.679443

 

EDIT: NAŠAO SAM SAM GREŠKU. GREŠKA JE DA atoi() NEMOZE KORISTIT CHAR SA ARRAYOM PA TAKO UMJESTO TOGA atoi(&x[i]) STAVIO SAM y=x[i] TE atoi(&y) ...PROBLEM RIJEŠEN :))))

 

Evo koda dolje:

||

||

\/

 

 

#include <iostream>

#include <conio.h>

#include <string.h>

#include <math.h>

using namespace std;

 

float pretvorba(int b, char x[50]){

    int i=0, b2=b, t;

    float a=0;

 

    for (i=0; i<strlen(x); i++){

      if (x[i]=='.'){

        i++;

        break;

        }

      }

 

    while (i<strlen(x)){

       switch (x[i]){

           case 'A':

             a+=10/float(b);

             break;

           case 'B':

             a+=11/float(b);

             break;

           case 'C':

             a+=12/float(b);

             break;

           case 'D':

             a+=13/float(b);

             break;

           case 'E':

             a+=14/float(b);

             break;

           case 'F':

             a+=15/float(b);

             break;

           default:

               t=atoi(&x[i]);

               a+=t/float(b);

               cout<<a;

           }

       i++;

       b*=b2;

       }

    i=0;

    for (i=0; i<strlen(x); i++){

      if (x[i]=='.'){

        break;

        }

      }

    b=1;

    do {

      i--;

      switch (x[i]){

         case 'A':

            a+=10*b;

            break;

         case 'B':

            a+=11*b;

            break;

         case 'C':

            a+=12*b;

            break;

         case 'D':

            a+=13*b;

            break;

         case 'E':

            a+=14*b;

            break;

         case 'F':

            a+=15*b;

            break;

         default:

             t=atoi(&x[i]);

             a+=t*b;

             cout<<a;

         }

      b*=b2;

      } while (i>0);

   return a;

   }

 

int main(){

   char x[50];

   int b;

 

   cout<<"___ Program koji pretvara broj iz sustava u dekadski ___\n";

 

   cout<<"Unesite broj: ";

   cin>>x;

   cout<<"Unesite bazu prethodno unesenog broja: ";

   cin>>b;

 

   char dekadski_broj[50];

   sprintf(dekadski_broj, "%f", pretvorba(b, x));

 

   cout<<"Uneseni broj u bazi 10 iznosi: "<<dekadski_broj;

 

   getch();

   return 0;

   }

 

Poruka je uređivana zadnji put pon 18.10.2010 10:15 (calex3).
 
0 0 hvala 0
17 godina
neaktivan
offline
RE: C++ Greška u programu.
Evo ti odmah prva... dva puta includas istu...


A znas mogao si nam olaksati i pokazati compile gresku... i na kojoj liniji breaka...
In Control... MNOGE države imaju mafiju. Ali u Hrvatskoj mafija ima državu...
15 godina
neaktivan
offline
RE: C++ Greška u programu.

:O nisam to vidija tnx al nije to greska....

nema compile errora u liniji...samo program ne radi a trebao bi

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice