我在创建能够识别字符串是否已经打印的代码方面遇到了一些困难。
该练习的目的是添加一些单词并计算该单词的键入次数,但是在打印结果时,我只想显示未重复的单词。
我不知道这是怎么回事,即使字符串不相等,“我的收藏夹”函数也总是得到正确的结果,有没有人可以帮助我?
// Aluno: Diogo Ianhke
// Data: 01/12/2019
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Defines
#define qnt 12 // Quantidade de palavras a serem armazenadas
// Prototype of functions
void store (); // Função para armazenar palavras inseridas pelo usuário
void cleaning (int result [qnt], char aux[qnt][20]); // Limpa lixo do vetor
int isAdded(char words[][20], int posicao); // Função para verificar se a palavra ja foi impressa
// Variables
char words [qnt][20]; // Armazena palavras fornecidas pelo usuário
char aux [qnt][20]; // Vetor auxiliar para verificar se a palavra ja foi impressa
int result [qnt]; // Armazena a incidência de cada palavra
int i, j, select, teste;
int percentual;
int main()
{
while(1){
system("cls");
printf("\n\t1.Iniciar programa.\n\t2.Finalizar programa.\n\n\topcao desejada: ");
scanf("%d",&select);
switch (select) {
case 1:
system("cls");
store(); // Armazenas palavras inseridas pelo usuário
system("cls");
cleaning (result, aux); // Remove lixo dos vetores
for (j=0;j<qnt;j++){ // Conta quantas vezes cada palavra foi utilizada
for(i=0;i<qnt;i++){
if (strcmp(words[j], words[i]) == 0){
result[j] = result[j] + 1;
}
}
}
for (i=0;i<qnt;i++){
teste=isAdded(words,i);
percentual = (result[i]*100)/(qnt*1);
if (teste) printf("\n\t%s exibido (a): %d vez(es) ou %d%%\n", words[i],result[i], percentual);
strcpy(aux[i], words[i]);
}
printf("\n\n\n");
system("pause");
break;
case 2:
exit(0);
break;
default:
system("cls");
printf("\n\t Valor incorreto, a entrada deve ser 1 ou 2. \n\n\n");
system("pause");
break;
} // END Switch
} // END while function
return 0;
} // END main function
void store (){
for (i=0;i<qnt;i++){
printf("\n\tDigite a palavra %d: ", i+1);
scanf("%s", words[i]);
system("cls");
}
printf("\n\tNomes Armazenados com sucesso \n\n");
;
}
void cleaning (int result [qnt], char aux[qnt][20]){
for (i=0;i<qnt;i++) {
result[i] = 0;
strcpy(aux[i],"\0");
}
}
int isAdded(char words[][20], int posicao){
int i=0;
int flag = 0;
for(i=0;i<(qnt-1);i++){
if(strcmp(words[posicao],aux[i])==0){
flag=1;
break;
}
}
if(flag)
return 0;
else
return 1;
}
测试01: 输入:ARIEL,NANY,ARIEL 输出:ARIEL,NANY
测试02: 输入:ARIEL,ARIEL,NANY 输出:没什么
我按照吉恩(Gene)给出的提示,将一些printf与代码一起查找错误,幸运的是,我可以使其部分工作。
当我在序列中输入相同的单词时,它不起作用。
感谢所有帮助我的人