Windows 7 Forum: konfiguracja, optymalizacja, porady, gadżety •
Warrning w c++ - Wersja do druku

+- Windows 7 Forum: konfiguracja, optymalizacja, porady, gadżety • (https://windows7forum.pl)
+-- Dział: Inne (/inne-11-f)
+--- Dział: Hydepark (/hydepark-18-f)
+--- Wątek: Warrning w c++ (/warrning-w-c-15277-t)



Warrning w c++ - rafi993 - 08.04.2011 17:20

A więc w szkole nakazano nam napisać program zamieniający liczbę dziesiętną na szesnastkową. Po napisaniu(wydawało mi się że dobrze) wyskakuje mi błąd:
[warning]overflow in implicit constant conversion. Błąd wyrzuca przy linijce case gdzie do z ma być przypisane A.

oto kod programu:
Kod:
#include <cstdlib>
#include <iostream>

using namespace std;
void szes(int l, char t[], char &z){
     z=0;
     while(l>16) {
                   t[z]=l%16;
                   l=l/16; z++;}
                   t[z]=l;}
int main(int argc, char *argv[])
{int l,z; char t[100]; string A,B,C,D,E,F;
cout<<"podaj liczbe"<<endl;
cin>>l;
szes(l,t,z);

switch (z) {
      case '0':  z=0; break;
      case '1':  z=1; break;
      case '2':  z=2; break;
      case '3':  z=3; break;
      case '4':  z=4; break;
      case '5':  z=5; break;
      case '6':  z=6; break;
      case '7':  z=7; break;
      case '8':  z=8; break;
      case '9':  z=9; break;
      case '10':  z=A; break;
      case '11':  z=B; break;
      case '12':  z=C; break;
      case '13':  z=D; break;
      case '14':  z=E; break;
      case '15':  z=F; break;
         }

   for(char i=z;i>=0;i--)

cout<<t[i]<<endl;      
      
      
      
      
    system("PAUSE");
    return EXIT_SUCCESS;
}

dzięki za każdą pomoc


RE: Warrning w c++ - HaXoR - 12.04.2011 22:54

o.O gdzie ci to wogóle skompilowało... w ten sposób w który ty chcesz zrobić musiał byś kombinować z rzutowaniem a i tak by pewnie nie działało tak jak powinno w niektórych wypadkach. Jak dla mnie masz troche dziwne myślenie algorytmiczne, no ale każdy robi jak lubi Cwaniak. Przykład działającego programu pisany na szybko ( działa poprawnie do liczby ok 2 000 000 000)


#include <iostream>
#include <conio.h>

long int lb, bufor;
short int ll,systeml;
char tab[32] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'​,'p','r','s','t','u','w','z'};
char wyn[256];
void licz(int a);

int main()
{
std::cout<<"podaj liczbe"<<std::endl;
std::cin>>lb;
while(!systeml)
{
std::cout<<"podaj system liczbowy (max x32)"<<std::endl;
std::cin>>systeml;
if(systeml>32 || systeml==1){systeml=0;}
}
bufor=lb;
wyn[ll]=tab[bufor%systeml];
ll+=1;
licz(lb-(bufor%systeml));
std::cout<<lb<<" x(10) = ";
while(ll!=0)
{
std::cout<<wyn[ll];
ll-=1;
}
std::cout<<wyn[ll]<<" x("<<systeml<<")";
getch();
}

void licz (int a)
{
while(a!=0)
{
a=a/systeml;
wyn[ll]=tab[a%systeml];
a=a-(a%systeml);
if(a){ll+=1;}
}
}


RE: Warrning w c++ - rafi993 - 13.04.2011 04:51

Można zamknąć, Już znalazłem rozwiązanie.