2016-04-07 5 views
-1

Я пытаюсь сделать программу, в которой пользователь будет постоянно давать отдельные слова, и программа будет вычислять все разные слова. Например: Пользователь дает: «Привет», Пользователь дает: «Bye», Пользователь дает: «Хорошо», Пользователь дает: «Плохо», Пользователь дает: «Bye». Это 4 разных слова. Я хочу, чтобы он вычислил их, когда пользователь закончил давать слова. Это код, который я написал, но я не могу закончить его. Я новичок в программировании, и этот вопрос может показаться глупым, но для меня это очень важно.c программа, которая вычисляет количество разных слов

`

#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <string.h> 


int main(int argc, char *argv[]) { 
    int num=0,b=0,h=0,g=0; 
    char name[31],text[2000]; 
    while (num==0){ 
     printf("give word: \n"); 
     scanf("%s", name); 
     printf("%s\n", name); 
     if (strcmp(name,"*fff*")==0){ 
      num=1; 
     } 
     else { 
      h=h+1; 
      b=b+strlen(name); 
      strcpy(text,name); 


     } 
    } 

    return 0; 
} 

`

+0

Похоже, вы хотите ** уникальные ** слова – LinuxDisciple

+1

Вам не хватает логики для достижения того, чего вы хотите. Вам нужно каким-то образом сохранить все предыдущие записи, так как каждая новая запись будет добавлена, вы можете сравнить все предыдущие записи. При этом выписывание всего дерева логики является слишком широким для этого формата. – Claies

+0

Я хочу количество разных слов. слова, которые появляются более одного раза для 1. Я новичок и не знаю этих вещей очень хорошо. Я знаю, что мне не хватает логики. :/i нужно, чтобы каждое новое слово сравнивалось со старыми. Но я не знаю, как это сделать – timgr17

ответ

0

Вместо того, чтобы слова в один гигантский массив символов, вы должны создать массив символьных массивов, а затем проверить весь массив каждый раз для дубликатов. Это было бы относительно неэффективно, но это сработало бы.

0

Каждый раз, когда вы читаете слово, преобразуйте его в уникальный 32-битный хэш. Это намного быстрее и проще для поиска в отсортированном массиве целых чисел, чем для сравнения 1000 строк.