2012-03-30 4 views
1

Je n'arrive pas à comprendre comment procéder.Nombre de correspondances dans un tableau

La question: Mettre en œuvre la fonction

int count_matches(const string arr[], int size, string query); 

Retourne le nombre de chaînes dans le tableau qui sont égales à query ou -1 si la taille si elle est inférieure à 0.

Ma réponse:

#include <iostream> 
#include <cmath> 
#include<string> 

using namespace std; 

int count_matches(const string arr[], int size, string query){ 

    int i = 0; 
    int numMatches; 

    for (;i<size;i++) { 

    if (string[i] == (string[i]+1)){ 
     numMatches++; 
    } 

    } 

    return numMatches; 

} 


int main(){ 

    string selection; 

    const string array[4]={"dog", "cat", "dog", "dog"}; 

    cout<<"which animal do you want?"<<endl; 
    cin>> selection; 

    cout<< "there are " << count_matches(array, 4, selection)<< " matches"<<endl; 

    return 0; 
} 

Qu'est-ce qui ne va pas?

+1

Le nom de votre tableau est 'arr', alors qu'est-ce que' string [i] '? Aussi, regardez 'string [i] + 1' et pensez à ce que ça fait, aussi puisque' int numMatches; 'n'est pas initialisé, que pensez-vous que 'numMatches ++;' va faire? Et où utilisez-vous 'query'? –

+0

Vous n'utilisez pas du tout la variable 'query'. Je ne sais pas ce que vous vouliez ... Oh, et vous devriez probablement initialiser 'numMatches' ... – mcmcc

+0

comment réinitialiser numMatches? – user1145538

Répondre

1
int count_matches(const string arr[], int size, string query){ 

    int numMatches(0); 

    for (int i=0; i<size; ++i) 
    { 
    if (arr[i] == string) 
    { 
     ++numMatches; 
    } 
    } 

    return numMatches; 
} 

Cela devrait être une solution à votre problème, mais vous n'apprendrez jamais rien en obtenant la réponse de cette façon. Je conseillerais de lire ceci tutorial on arrays and loops pour mieux comprendre comment aborder le problème la prochaine fois.

1

Une fois que vous obtenez votre code pour compiler, vous devez examiner attentivement ce bloc:

if (string[i] == (string[i]+1)) { 
    numMatches++; 
} 

Qu'est-ce que vous voulez vraiment comparer ici? string est un type. Jetez un autre regard sur les arguments que vous passez dans la fonction et cela devrait le rendre clair.

Ensuite, une fois que vous avez une correspondance, vous incrémentez numMatches. Mais quelle valeur cela a-t-il à commencer? Quelle valeur devrait il doit commencer?


Notez que std::count() fait exactement ce que votre fonction count_matches() doit faire:

std::count(array, array + 4, selection) 

Ce ne sera probablement pas statisfy quiconque marques vos devoirs, mais il vaut la peine de jouer avec et apprendre si vous voulez faire avancer votre Compétences C++.


Bonne chance!

Questions connexes