Program zliczający wystąpienia unikalnego znaku w ciągu

0

Mam do napisania program który zlicza wystąpienia UNIKALNYCH znaków z ciągu drugiego w pierwszym.

Program mam napisany, tylko że zlicza mi tez powtórzenia.

Przykład:

Tekst:
This mystery puzzmysteryled me

Drugi Ciąg:
mystery

Oczekiwane wyjście:
18

Ktoś ma pomysł jak moge je wykluczyć?```

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

int count_all_of(char tab[], char tab2[], int size2);



int main() {
    
    char tab1[1000];
    char tab2[1000];
    int size2;
    
    
    printf("Podaj tekst\n");
    fgets(tab1,1000,stdin);
    
    printf("Podaj szukany ciag\n");
    fgets(tab2,1000,stdin);
    strtok(tab2,"\n");
    strtok(tab1,"\n");
    size2=(int)strlen(tab2);
    
    
    
    
    
    

    printf("%d\n",count_all_of(tab1, tab2, size2));
    return 0;
}


int count_all_of(char tab[], char tab2[], int size2)
{
    int i,j,licznik=0;
    
    if( isspace(tab2[0]))
    {
        return -1;
    }
    else
    {
        
        for(i=0;i<(int)strlen(tab);i++)
        {
            for(j=0;j<size2;j++)
            {
                
                if(tab[i]==tab2[j])
                {
                 //   printf("%c ",(char)tab2[j]);
                    licznik++;
                }
            }
        }
        return licznik;
    }
}


0
Helliot napisał(a):

Mam do napisania program który zlicza wystąpienia UNIKALNYCH znaków z ciągu drugiego w pierwszym.

Program mam napisany, tylko że zlicza mi tez powtórzenia.

Przykład:

Tekst:
This mystery puzzmysteryled me

Drugi Ciąg:
mystery

Oczekiwane wyjście:
18

Co rozumiesz przez unikalne znaki? W mystery jest 6 różnych znaków, więc unikalnych w pierwszym ciągu też może być max 6.

0

Zrobilem to sposobem @superdurszlak, tylko że samo wykonanie jest bardzo brzydkie.

Pętla usuwa powtórzenia i zastępuje je liczbami od 1.

   int temp=1;
    for(i=0;i<size2;i++)
    {
        for(j=0;j<size2;j++)
        {
            if(i!=j)
            {
                if(tab2[i]==tab2[j])
                {
                    tab2[j]=temp;
                    temp++;
                }
            }
           
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1