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

Se citesc de la tastatura 3 siruri de caractere. Sa se elimine din al 3 lea sir caracterele care sunt comune in primele doua siruri

Răspunsuri la întrebare

Răspuns de pufu128
1

#include <iostream>

#include <string.h>

using namespace std;

char s0[50];

char s1[50];

char s2[50];

// Am să fac un șir nou, sRez, pentru stocarea noului șir de caractere, care va fi construit fără caracterele comune.

char sRez[50];

int main() {

   // Citim șirurile de caractere

   cin.getline(s0, 50);

   cin.getline(s1, 50);

   cin.getline(s2, 50);

   

   // Cu „iRez” am să țin minte la ce poziție am ajuns în sRez. Practic, va fi aproape mereu la sfârșitul stringului.

   int iRez = 0;

   

   // Trec prin toate caracterele lui s2...

   for (int i = 0; i < strlen(s2); i++) {

       char x = s2[i];

       // Fac o variabilă comun. Dacă o setez la 1, va însemna că acel caracter este găsit și în s1, și în s2.

       int comun = 0;

       

       // „strchr” îmi returnează o adresă, sau NULL. Dacă îmi returnează NULL, înseamnă că al doilea parametru, de tip caracter, „x”, nu a fost găsit în șirul de caractere s0 (sau s1), adică primul parametru.

       // Nu folosesc rezultatul direct, și „fac != NULL” deoarece vreau să compar două valori de tip boolean (adevărat sau fals).

       if ((strchr(s0, x) != NULL) && (strchr(s1, x) != NULL)) comun = 1;

       

       // Dacă caracterul nu este comun în s0 și s1, atunci îl adaugăm la șirul nostru sRez.

       if (!comun) {

           sRez[iRez] = x;

           iRez++;

       }

   }

   

   cout << sRez;

   return 0;

}

Alte întrebări interesante