Para este problema, você pode usar um conjunto para acrescentar as letras, e apenas as letras, de cada frase e contar quantos elementos tem ao final para definir se a frase é completa, quase completa ou mal elaborada. Caso sua linguagem não tenha suporte a conjuntos, nada que um mapeamento em um vetor de 26 posições usando a tabela ASCII não resolva.
#include<string.h>#include<stdio.h>#include<ctype.h>intmain(){char frase[1001];int N, diferentes, contagem[26];scanf("%d\n",&N);for(int k =0; k < N; ++k){memset(contagem,0,sizeof(contagem));scanf("%[^\n]\n",&frase);for(int i =0; i <strlen(frase); ++i){if(isalpha(frase[i])){ contagem[frase[i] -'a'] =1; } } diferentes =0;for(int i =0; i <26; ++i){if(contagem[i]) ++diferentes; }if(diferentes ==26) printf("frase completa\n");elseif(diferentes >12) printf("frase quase completa\n");elseprintf("frase mal elaborada\n"); }return0;}
#include<iostream>#include<cctype>#include<set>usingnamespace std;intmain(){int N; string frase; set<char> letras; cin >> N;cin.ignore();for(int k =0; k < N; ++k){letras.clear();getline(cin, frase);for(int i =0; i <frase.length(); ++i){if(isalpha(frase[i])) letras.insert(frase[i]); }if(letras.size() ==26) cout <<"frase completa"<< endl;elseif(letras.size() >12) cout <<"frase quase completa"<< endl;else cout <<"frase mal elaborada"<< endl; }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.split('\n');letN=parseInt(lines.shift());for(let k =0; k <N; ++k){let frase =lines.shift().trim();let letras =newSet();for(let i =0; i <frase.length; ++i){if(/[a-z]/.test(frase[i])) letras.add(frase[i]); }if(letras.size ==26) console.log("frase completa");elseif(letras.size >12) console.log("frase quase completa");elseconsole.log("frase mal elaborada");}
N =int(input())for _ inrange(N): frase =input().strip() letras =set()for letra in frase:if(letra.isalpha()): letras.add(letra)if(len(letras)==26):print("frase completa")elif(len(letras)>12):print("frase quase completa")else:print("frase mal elaborada")