2013-06-29 38 views
0

我需要做的程序,并且所述输入是一组具有6行和以由空格隔开的3个数字数据的,具有“C”或在最后一行“F”:输入与空间相同的行。

input: 
4 5 6 
7 8 9 
7 8 9 
4 5 6 
7 8 9 
7 8 9 
c 
4 5 6 
7 8 9 
7 8 9 
4 5 6 
7 8 9 
7 8 9 
c 
4 5 6 
7 8 9 
7 8 9 
4 5 6 
7 8 9 
7 8 9 
f 

如果6行之后的最后一个字母是ac,则继续使用其他6行,如果是af,则结束。

我打算:

int main(){ 

char a; 
int triangulo[6][3]; 
do{ 
    for(int i=0; i<6; i++){ 
      cin>>triangulo[i][0]>>triangulo[i][1]>>triangulo[i][2];      
    } 

    cin>>a; 
}while(a != 'f'); 


system("pause"); 
} 

但现在的作品,你能帮助我。 因为我不知道如何在同一行中接收3个数字,用空格分隔并接收非常多的数据集。

还有一个问题。例如,如果用户编写c 7次,我需要为每个数据集创建一个数组?

input: 
4 5 6 
7 8 9 
7 8 9 
4 5 6 
7 8 9 
7 8 9 
c 
4 5 6 
7 8 9 
7 8 9 
4 5 6 
7 8 9 
7 8 9 
c 
4 5 6 
7 8 9 
7 8 9 
4 5 6 
7 8 9 
7 8 9 
f 

如果我必须求和每个数组和总和是我的输出,我需要为每个数据集创建一个数组?

output 
126 
126 
126 

回答

0

像这样的东西应该可以读取三位数字。

cin>>triangulo[0] >> triangulo[1] >> triangulo[2]; 

但是,如果你正在阅读的数字(1,2,3,18,33,418或一些这样的),你可能想使用int triangulo[3];代替。如果你真的想存储6组三个数字,你需要一个二维数组:

int triangulo[6][3]; 

... 

     cin>>triangulo[i][0] >> triangulo[i][1] >> triangulo[i][2]; 
+0

不,我的意图,但我写了六行,后来一个f,程序永远不会完成 –

+0

你能用不同的方式来说,因为我不明白你在问什么。 –

+0

我编辑我的问题 –

0

试试这个吗?

int main(){ 

    char a; 
    int triangulo[3]; 
    int sum=0; 
    do{ 
     for(int i=0; i<6; i++){ 
      cin>>triangulo[0] >> triangulo[1] >> triangulo[2]; 
      sum=sum+triangulo[0]+triangulo[1]+triangulo[2]; 
     } 

     cin>>a; 
    }while(a != 'f'); 

    cout<<sum; 

    system("pause"); 
} 

如果你想存储所有的阵列,可以使用户输入一个数字(多少阵列才会有)输入阵列之前和分配使用new内存。

+0

这与原始问题有什么不同? –

+0

是的,但我的主要问题是:我插入六行,稍后'c'继续,其后6行。我需要创建一个数组,每次我插入以继续??例如,如果我写6行后'C',后来其他6行后'F',我需要创建2个数组?因为我需要做手术。并打印输出。 –

+0

@AlexanderOvalle如果你想在输入所有数组后输出,那么是的。或者你可以在每次输入后打印一个数组。如果你不知道你可能有多少个输入数组,你应该使用'new'来动态分配内存。 – Immueggpain