2014-12-19 2 views
-1

(Я довольно новичок в программировании ... будьте осторожны: C) Я пытаюсь выполнить дополнительное задание на получение кредита, в котором я должен закодировать твитер-сканер. Я должен сначала ввести пользователя в hashtag ex: «# CMSC101» , а затем прочитать «твиты» от пользователя до входа пользователя ». оттуда программа подсчитывает, сколько раз пользователь использовал хэштегом и сколько раз хэштегом было упоминание в твитовСравнение элементов между двумя введенными пользователем массивами?

прогресс:

#include <stdio.h> 
int main(void){ 

int [MAX_TWEET_SIZE]; 
char target_tweet[MAX_TWEET_SIZE]; 
char tweet = 0; 
int match = 0; 
int instance = 0; 

printf ("Enter Target Tweet\n"); 

fgets (target_tweet, MAX_TWEET_SIZE, stdin); 

if (target_tweet[0] != '#'){ 
    printf("ERROR\n"); 
    return 0; 
} 

printf("Enter Tweets!\nenter '.' to quit: \n"); 


while (tweet < 140){ 
    scanf("%c", &tweet); 
    tweet = tweet + 1; 
    if ((tweet = target_tweet)){ 
     printf ("Tweet Matched.\n"); 
     match = match + 1; 

    } 
    if ((tweet = '.')){ 
     printf("%d tweet(s) matched\n", match); 
     return 0; 
    } 
} 
return 0; 
} 

Это то, что я до сих пор и в нем есть некоторые вопросы, в нем. (т.е. цикл в то время) я получил довольно обескуражен, и я не уверен, если я делаю это правильно вообще любая помощь будет высоко оценен

+0

У вас есть некоторые орфографические ошибки, которые могут быть или не быть источником ошибок. – bobtheboy

+0

Ошибки орфографии не были в моем компиляторе, однако я рад, что вы указали их здесь! – Joseph

ответ

0

Прежде всего, у вас есть некоторые орфографические ошибки. Первый - это printf в цикле while. Второй - это int MAX_TWEET_SIZE в верхней части. У вас есть дополнительный кронштейн.

Во-вторых, в то время как (tweet < 140){, сравнение всегда верно из-за ограниченного диапазона данных. Я бы рекомендовал вместо этого использовать while(true){}

Последняя ошибка с if ((tweet = target_tweet)){. В этом коде у вас неверное преобразование от char* до char. Чтобы исправить это, вы можете использовать strcmp, так как вы не можете сравнить две строки с «=». Это все, что я нашел не так с этим кодом. Надеюсь, это ответит на ваш вопрос.

0

Две ошибки на первый взгляд:

if ((tweet = target_tweet)) 

В случае если вы хотите использовать ==, если вы хотите проверить, равны ли две переменные, но вы не можете сравнить две строки с ним. Вы кодируете target_tweet для чириканья, но они не имеют одинакового типа. Я даже не понимаю, что вы хотите сделать здесь. Если вы хотите проверить, являются ли tweet и target_tweet равными, вы должны использовать strcmp, и вы должны читать в твитте в виде строки.

while (tweet < 140) 

Я не вижу необходимости в этом. Вы должны просто использовать бесконечный цикл, как:

while(1) 

В основном я хотел бы попробовать это как-то вроде этого:

while (1){ 
    scanf("%s", tweet); 
    if (strcmp(tweet, target_tweet == 0){ 
     pritnf ("Tweet Matched.\n"); 
     match++; 
    } 

    if ((tweet[0] == '.')){ 
     printf("%d tweet(s) matched\n", match); 
     break; //to end the loop 
    } 
} 
+0

Спасибо за помощь, я по-прежнему не знаю, как написать функцию strcomp, чтобы вернуть ее к основной функции (если вообще), главная проблема, связанная с этим, заключается в том, чтобы программа выполняла следующее: target: #help твиты: COMP SCI #Help Дополнительный кредит #Help Затем программа говорит «чИРИКНУТЬ совпадающая дважды» от всего подобных элементов из каждой строки. – Joseph

Смежные вопросы