Informatică, întrebare adresată de gdoiu, 8 ani în urmă

Se citesc două numere naturale n şi m de câte două cifre fiecare. Să se spună dacă sunt formate sau nu din
aceleaşi cifre. Ex: n=57, m=75 =>”DA”; n=57, m=77 =>”NU”. In limbajul C !!


bcalinescu79: #include

#include

#include

int digit_set(int a)
{
int set = 0;
do
{
set |= 1 << abs(a % 10);
} while ((a /= 10) != 0);

return set;
}

bool same_digits(int a, int b)
{
return digit_set(a) == digit_set(b);

}

int main()
{
int n, m;

scanf("%d", &n);

scanf("%d", &m);

if ( same_digits(n, m) )
{
printf ( "DA");
}
else
{
printf ( "NU");
}

return 0;

}

Răspunsuri la întrebare

Răspuns de SoniaNic
0

În limbajul C, acest lucru poate fi realizat prin următorii pași:Convertim cele două numere naturale n și m în șiruri de caractere.Sortăm fiecare șir în ordine lexicografică.Comparăm șirurile sortate pentru a vedea dacă sunt identice sau nu.Dacă sunt identice, afișăm "DA", altfel afișăm "NU".Aici este un exemplu de cod:


#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int compare(const void *a, const void *b) {

   return (*(char *)a - *(char *)b);

}

int main() {

   int n, m;

   scanf("%d%d", &n, &m);

   char sn[5], sm[5];

   sprintf(sn, "%d", n);

   sprintf(sm, "%d", m);

   qsort(sn, strlen(sn), sizeof(char), compare);

   qsort(sm, strlen(sm), sizeof(char), compare);

   if (strcmp(sn, sm) == 0) {

       printf("DA");

   } else {

       printf("NU");

   }

   return 0;

}

Alte întrebări interesante