2015-05-08 6 views
0

Как мы можем взять несколько чисел целочисленных входов по выбору пользователя в c во время выполнения. Здесь первая строка ввода - это номер тестовых примеров. Тогда я вычисляю сумму входных чисел в этом случае.несколько входов пользователем динамически во время выполнения

Тестовый пример:

Входной

3 
1 6 7 
2 7 3 4 
2 1 

Выход:

14 
16 
3 

Можем ли мы изменить зсапЕ() таким образом, чтобы он мог обработать этот динамический входы.

Я не могу взять строку в виде строкового ввода, а затем разбить на цифры.

Можем ли мы использовать пространство и \ п как решить число, как мы делаем, чтобы взять строки в качестве входных данных в качестве примера: scanf("%[^\n]",&str);

+0

'зсапЕ ("% d", & Num)' будет делать трюк. Но знаете ли вы, сколько чисел будет введено в каждом тестовом случае? или это случайный? –

+0

no Я видел, что @LPs – Subinoy

+1

* «Я не могу взять строку в виде строкового ввода, а затем разбить на цифры». * - почему очевидное решение не разрешено? –

ответ

0

Ответ был предоставлен BLUEPIXY его хороший код. Здесь мы рассмотрим входные данные как пару.

Либо это будет пара чисел и пробелов, либо пара чисел и символов новой строки.

Пример: 2 3 4

Таким образом, в этом входе мы принимаем в виде пар, как - '2 ', '3 ' и '4' \n. Когда мы сталкиваемся с \n, мы останавливаем бесконечный цикл. Вот код идет:

#include <stdio.h> 

int main(void){ 
    int n; 

    scanf("%d", &n); 
    while(n--){ 
     int v, sum = 0; 
     while(1){ 
      char ch = 0; 
      scanf("%d%c", &v, &ch); 
      sum += v; 
      if(ch == '\n' || ch == 0) 
       break; 
     } 
     printf("%d\n", sum); 
    } 

    return 0; 
} 

Входы:

3 
1 6 7 
2 7 3 4 
2 1 

Выход:

14 
16 
3 
+0

Незначительные дыры с этим подходом состоят в том, что он полагается на: 1) номер '' \ n'' и 2) строка имеет не менее 1 номер 3) текст ввода всегда числовой. – chux

+0

@chux Да, вы правы, что входной текст всегда должен быть числовым. – Subinoy

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