Informatică, întrebare adresată de Motto, 9 ani în urmă

imi poate explica cineva unde e greseala si ce ar trebui sa schimb? nu vreau alte metode de rezolvare , doar indicatii la metoda mea
#include <iostream>#include <cstring>#include <ctype.h>
/*63. Fie n nr. natural. Sa se faca conversia lui n in baza 16.*/
using namespace std;
int main(){    int n,i;    char a[256];    cin>>n;    *a=NULL;    while (n)    {        if (n%16>=10)            strcat(a,'A'+n%16-10);        else            strcat(a,n%16);        n=n/16;    }    cout<<a;    return 0;}

Răspunsuri la întrebare

Răspuns de express
0
Ti-am "dres" sursa ta (sincer eu n-o faceam asa). Ai greseli in folosirea functiei strcat: 
Functia. strcat - concateneaza doua siruri. Tu nu aveai doua siruri.Am incercat sa dezvolt ideea ta fara strcat doar cu vectorul de caractere a[256] declarat global si nu local cum ai facut-o tu. Am mai folosit biblioteca universala <bits/stdc++.h>, pe care te sfatuiesc s-o faci si tu pentru a nu mai scrie atatea biblioteci. Succes!
#include <bits/stdc++.h>
/*63. Fie n nr. natural. Sa se faca conversia lui n in baza 16.*/
char a[256], c;
int n, i, val;
using namespace std;
int main()
{
    cin >> n;
    while (n)
    {
        if (n%16 >= 10)
         {
             val = n%16 - 10;
             c = 'A' + val;
             a[i ++] = c;
             n=n/16;
         }
           else
           {
           val = n%16;
           c = '0' + val;

           a[i ++] = c;
           n=n/16;
           }
    }
    cout << a;
    return 0;
}
Alte întrebări interesante