Pereiti prie turinio

C programavimo užduotis


Rekomenduojami pranešimai

Sveiki, turiu gavęs užduotį, kurios pats atlikti nesugebėjau, tai paprašiau draugo ir ją atliko. Bet dabar tas draugas nepasiekiamas ir negali man paaiškinti, kaip veikia šita programa. Tai jeigu galit, paaiškinkit, kaip čia viskas vyksta.

 

Sąlyga:

Žinomi du to paties skaičiaus (dešimtainio) užrašai dviem skaičiavimo sistemomis,
vartojant dešimtainius skaitmenis, X = Y. Indeksai, žymintys skaičiavimo sistemas, uždengti.
Parašykite programą, nustatančią, koks tai skaičius dešimtainėje skaičiavimo sistemoje
ir kokiose sistemose skaičiai yra pateikti. Privalu panaudoti funkcijas ir tiesioginę
atminties adresaciją.

 

Kodas:

#include <string.h>
#include <stdio.h>

int maxskaitmuo(char* skaicius)
{
   int max = -1;
   int i;
   for (i=0; i<strlen(skaicius)-1; i++)
   {
       int s;

       if (skaicius[i] >= '0' && skaicius[i] <= '9')
       {
           s = skaicius[i] - '0';
       }
       else if (skaicius[i] >= 'A' && skaicius[i] <= 'F')
       {
           s = 10 + (skaicius[i] - 'A');
       }
       else
       {
           return -1;
       }

       if (s > max)
       {
           max = s;
       }

   }

   return max;
}

void ivesti(char* pranesimas, char** rez)
{
   printf("%s", pranesimas);

   int simbolis = 0;
   int index = 0;

   while((simbolis = getchar()))
   {
       *rez = realloc(*rez, (index + 1));
       if(*rez)
       {
           (*rez)[index] = simbolis;
           if(simbolis == '\n')
           {
               (*rez)[index] = '\0';
               break;
           }
           index++;
       }
       else
       {
           free(*rez);
           printf("Nenumatyta klaida !\n");
           return 0;
       }


   }
}

int main(int argc, char** argv)
{

   char *skaicius1 = NULL;
   char *skaicius2 = NULL;
   ivesti("Iveskite pirma skaiciu: ", &skaicius1);
   ivesti("Iveskite antra skaiciu: ", &skaicius2);

   char *pEnd;
   int i;
   int j;
   int maxi = maxskaitmuo(skaicius1);
   int maxj = maxskaitmuo(skaicius2);

   if (maxi == -1 || maxj == -1)
   {
       printf("Patikrinkite ivestus skaicius\n");
       return 1;
   }

   printf("\n");
   printf("Didziausias pirmo skaiciaus skaitmuo '%d', todel minimali sistema %d\n", maxi, maxi + 1);
   printf("Didziausias antro skaiciaus skaitmuo '%d', todel minimali sistema %d\n", maxj, maxj + 1);

   int found = 0;

   for (i=maxi+1; i <= 32; i++)
   {
       for(j=maxj+1; j <= 32; j++)
       {
           long int sk1 = strtol(skaicius1, &pEnd, i);
           long int sk2 = strtol(skaicius2, &pEnd, j);

           if (sk1 == sk2)
           {
               found = 1;
               printf("------------------\n");
               printf("Skaicius desimtaineje sistemoje: %ld\n", sk1);
               printf("Pirmo skaicius sistema: %d\n", i);
               printf("Antro skaiciaus sistema: %d\n", j);
            }
       }
   }

   if(found == 0)
   {
       printf("Skaiciai nera vienodi\n");
   }

   return 0;
}

 

Jeigu suprantate kodą, pasakykit ar jis čia į temą parašytas. Jiegu ne, tai gal galit padaryti šią programą su komentarais ir programos veikimo principą? Sumokėčiau proto ribose :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, turiu gavęs užduotį, kurios pats atlikti nesugebėjau, tai paprašiau draugo ir ją atliko. Bet dabar tas draugas nepasiekiamas ir negali man paaiškinti, kaip veikia šita programa. Tai jeigu galit, paaiškinkit, kaip čia viskas vyksta.

 

Sąlyga:

Žinomi du to paties skaičiaus (dešimtainio) užrašai dviem skaičiavimo sistemomis,
vartojant dešimtainius skaitmenis, X = Y. Indeksai, žymintys skaičiavimo sistemas, uždengti.
Parašykite programą, nustatančią, koks tai skaičius dešimtainėje skaičiavimo sistemoje
ir kokiose sistemose skaičiai yra pateikti. Privalu panaudoti funkcijas ir tiesioginę
atminties adresaciją.

 

Kodas:

#include <string.h>
#include <stdio.h>

int maxskaitmuo(char* skaicius)
{
   int max = -1;
   int i;
   for (i=0; i<strlen(skaicius)-1; i++)
   {
       int s;

       if (skaicius[i] >= '0' && skaicius[i] <= '9')
       {
           s = skaicius[i] - '0';
       }
       else if (skaicius[i] >= 'A' && skaicius[i] <= 'F')
       {
           s = 10 + (skaicius[i] - 'A');
       }
       else
       {
           return -1;
       }

       if (s > max)
       {
           max = s;
       }

   }

   return max;
}

void ivesti(char* pranesimas, char** rez)
{
   printf("%s", pranesimas);

   int simbolis = 0;
   int index = 0;

   while((simbolis = getchar()))
   {
       *rez = realloc(*rez, (index + 1));
       if(*rez)
       {
           (*rez)[index] = simbolis;
           if(simbolis == '\n')
           {
               (*rez)[index] = '\0';
               break;
           }
           index++;
       }
       else
       {
           free(*rez);
           printf("Nenumatyta klaida !\n");
           return 0;
       }


   }
}

int main(int argc, char** argv)
{

   char *skaicius1 = NULL;
   char *skaicius2 = NULL;
   ivesti("Iveskite pirma skaiciu: ", &skaicius1);
   ivesti("Iveskite antra skaiciu: ", &skaicius2);

   char *pEnd;
   int i;
   int j;
   int maxi = maxskaitmuo(skaicius1);
   int maxj = maxskaitmuo(skaicius2);

   if (maxi == -1 || maxj == -1)
   {
       printf("Patikrinkite ivestus skaicius\n");
       return 1;
   }

   printf("\n");
   printf("Didziausias pirmo skaiciaus skaitmuo '%d', todel minimali sistema %d\n", maxi, maxi + 1);
   printf("Didziausias antro skaiciaus skaitmuo '%d', todel minimali sistema %d\n", maxj, maxj + 1);

   int found = 0;

   for (i=maxi+1; i <= 32; i++)
   {
       for(j=maxj+1; j <= 32; j++)
       {
           long int sk1 = strtol(skaicius1, &pEnd, i);
           long int sk2 = strtol(skaicius2, &pEnd, j);

           if (sk1 == sk2)
           {
               found = 1;
               printf("------------------\n");
               printf("Skaicius desimtaineje sistemoje: %ld\n", sk1);
               printf("Pirmo skaicius sistema: %d\n", i);
               printf("Antro skaiciaus sistema: %d\n", j);
            }
       }
   }

   if(found == 0)
   {
       printf("Skaiciai nera vienodi\n");
   }

   return 0;
}

 

Jeigu suprantate kodą, pasakykit ar jis čia į temą parašytas. Jiegu ne, tai gal galit padaryti šią programą su komentarais ir programos veikimo principą? Sumokėčiau proto ribose :)

 

as galiu padeti

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...