2016-05-06 12 views
-5

Ich habe ein Array mit einer bestimmten Größe (zum Beispiel 100), die mit Benutzereingaben gefüllt ist. Der Benutzer muss jedoch nicht unbedingt genügend Daten eingeben, um das gesamte Array zu füllen.Wie Elemente des Arrays in C++ zu zählen

Ich möchte die Elemente des Arrays, die der Benutzer eingegeben hat, zählen. Wie kann ich das machen?

ich damit für Schleife versucht:

int COUNT=0; 
for(int i=0; i<size; i++) 
    if (Student[i]=1) //which means this element is true, not empty element. 
     COUNT++; 
cout<< COUNT+1 << "\n"; 

Aber dieser Code gibt einen Fehler auf dieser Linie:

if (Students[i]==1)

Auch, wenn der Benutzer sich wiederholende Elemente eintritt, ich will nur Zählen Sie die einzigartigen Elemente (zählen Sie jeden Wert einmal).

Mein Code ist:

#include <iostream> 
#include <string> 
#include <sstream> 
#include <math.h> 
#define size 100 
using namespace std; 
int main() 
{ 
    string Students_; 
    string word2; 

    getline(cin, Students_); 
    int k; 
    int l; 
    k = Students_.find("["); 
    Students_.erase(0, k + 1); 
    l = Students_.find("]"); 
    string line2 = Students_.erase(l); 
    stringstream iss(line2); 
    string Students[size]; 
    int counter = 0; 
    while (getline(iss, word2, ';') && counter < size) { 
     Students[counter++] = word2; 
    } 

    int COUNT = 0; 
    for (int i = 0; i < size; i++) 
     if (Students[i] == 1) 
      COUNT++; 
    cout << COUNT + 1 << "\n"; 
    return 0; 
} 

Der Eingang zum Beispiel ist:

Students=[8347,Islam Said,(ARC135,ARC114,ARC134,ARC135);8256,Esraa Said,(ARC134,ARC135,ARC114);8336,Ismail Said,(ARC134,ARC135,ARC114);8285,Ismail Adballah,(ARC114,ARC135,ARC134,ARC114);8349,Esraa Kassem,(ARC135,ARC114,ARC134);8505,Bassant Kassem,(ARC114,ARC135,ARC134,ARC114);8381,Ismail Kassem,(ARC135,ARC134,ARC114,ARC135);8360,Bassant AbdAlrahman,(ARC114);8498,Mohamed Kamal,(ARC135,ARC114,ARC134);8255,Ali Bassem,(ARC114,ARC135);8437,Mohamed Said,(ARC135);8524,Osama Adballah,(ARC114,ARC135);8334,Osama Kamal,(ARC114,ARC135,ARC134);8501,Esraa Tarek,(ARC135,ARC134);8394,Ahmed Zain,(ARC134,ARC135)] 

Der Eingang ist nicht konstant, es ist nur ein Beispiel.

+3

's/if (Student [i] = 1)/if (Student [i] == 1) /' - auch für die Liebe alles, was anständig ist, bitte aktivieren sie Compilerwarnungen und notieren sie (zB 'gcc -Wall ...'). –

+2

Verwenden Sie einen 'std :: vector', wenn Sie nicht wissen, wie viele Elemente der Benutzer eingeben wird. – NathanOliver

+3

Aktivieren Sie zuerst mehrere Compiler-Warnungen. Fügen Sie dann eine [mcve] und eine eindeutige Problembeschreibung in alle Debugfragen ein, wie in [ask] beschrieben. Und zuletzt: Eine Frage pro Frage bitte. –

Antwort

0

In der Anweisung if weisen Sie einen Wert zu, anstatt ihn zu prüfen.

Versuchen

if (Student[i] == 1) 
+0

Ich habe versucht, wenn (Student [i] == 1) ... Aber immer noch gibt es einen Fehler! – Tity

+0

Ihre Student-Variable ist ein Array von Strings. Sie können Zeichenfolgen nicht mit ganzen Zahlen vergleichen. –

0

sizeof(array)/sizeof(array[0])

In C++ Versuchen immer std::vector verwenden. Es gibt mehrere integrierte Funktionen und eine erweiterte Funktionalität.

std::vector hat eine Methode size(), die die Anzahl der Elemente im Vektor zurückgibt.

(Ja, das ist tongue-in-cheek Antwort)

+0

Kannst du einen Code schreiben, um zum Beispiel mehr zu erklären? – Tity

+1

OP möchte die Größe des Arrays nicht, er möchte wissen, wie viele Elemente eingegeben wurden. Außerdem sollte Ihre 'sizeof' Lösung niemals in C++ verwendet werden. Es ist unsicher und kann falsche Ergebnisse liefern, Template-Lösung ist überlegen. –

+1

@Revolver_Ocelot Wie ist es unsicher? 'sizeof (array)/sizeof (array [0])' gibt Ihnen immer die Größe eines Arrays. – NathanOliver

Verwandte Themen