检查字符串是否已经在C中打印

时间:2019-12-01 15:44:19

标签: c multidimensional-array

我在创建能够识别字符串是否已经打印的代码方面遇到了一些困难。

该练习的目的是添加一些单词并计算该单词的键入次数,但是在打印结果时,我只想显示未重复的单词。

我不知道这是怎么回事,即使字符串不相等,“我的收藏夹”函数也总是得到正确的结果,有没有人可以帮助我?

// 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与代码一起查找错误,幸运的是,我可以使其部分工作。

当我在序列中输入相同的单词时,它不起作用。

感谢所有帮助我的人

0 个答案:

没有答案