2013-06-29 2 views
0

мне нужно сделать программу, а вход представляет собой набор данных с 6 линий, а также с 3-х чисел, разделенных пробелами, с «с» или с «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

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