2016-05-06 74 views
-5

我有一个特定大小的数组(例如100),它充满了用户输入。但是,用户可能不一定输入足够的数据来填充整个阵列。如何计算C++数组中的元素

我想统计用户输入的数组元素。我怎样才能做到这一点?

我试图for循环:

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"; 

但这个代码给出了在这条线的错误:

​​

另外,如果用户输入重复的元素,我只是想统计独特元素(每次计数一次)。

我的代码是:

#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; 
} 

例如输入是:

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)] 

输入不是恒定的,它只是一个例子。

+3

'S /如果(学生[I] = 1)/ IF(学生[I] == 1)/' - 也为的爱所有这些都不错,请启用编译器警告并注意它们(例如'gcc -Wall ...')。 –

+2

如果您不知道用户将输入多少元素,请使用'std :: vector'。 – NathanOliver

+3

首先,启用更多的编译器警告。然后按照[问]中的说明在所有调试问题中包含一个[mcve]和一个明确的问题陈述。最后:每个问题请提出一个问题。 –

回答

0

if声明中,您将分配一个值而不是检查它。

尝试

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

我试过如果(学生[我] == 1)...但仍然有一个错误! – Tity

+0

Your Students变量是一个字符串数组。您无法将字符串与整数进行比较。 –

0

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

在C++中总是使用std::vector。有几种内置功能和扩展功能。

std::vector有一个方法size()它返回矢量中元素的数量。

(是的,这是舌头在脸颊的答案)

+0

你能写一个例子来解释更多的代码吗? – Tity

+1

OP不想要数组的大小,他想知道输入了多少个元素。另外,您的'sizeof'解决方案不应该在C++中使用。这是不安全的,可以给出错误的结果,模板解决方案是优越的。 –

+1

@Revolver_Ocelot它如何不安全? 'sizeof(array)/ sizeof(array [0])'总是会给你一个数组的大小。 – NathanOliver