Как сканировать много чисел в одной строке? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

итак, вот код:
for(i=0;i<M;i++)
{
scanf("%d",&r[0][i]);
for(j=1;j<r[0][i]*2;j++)
{
scanf("c1 %d ",&r[j][i]);
}
}
числа вводятся через пробел, с этим циклом он их неправильно сканирует т.к. в одной строке ждёт 1 число %d, как исправить? "%d%d%d%d" вводить нет возможности, так как не знаю сколько цифр введётся через пробел(точнее это указывается ранее)

Решение задачи: «Как сканировать много чисел в одной строке?»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
main()
{
    int N,E,M,i,j,aaa;
    scanf("%d%d%d",&N,&E,&M);
    int r[N*2+1][M];
    for(i=0;i<M;i++)
    {
    scanf("%d",&r[0][i]);
        for(j=1;j<r[0][i]*2;j++)
        {
            scanf("c1 %d ",&r[j][i]);
        }
    }
        for(i=0;i<M;i++)
    {
    printf("%d\n",r[0][i]);
        for(j=1;j<r[0][i]*2;j++)
        {
            printf("%d",r[j][i]);
        }
    }
}

Объяснение кода листинга программы

В этом коде программа запрашивает у пользователя ввод трех целых чисел N, E и M. Сначала объявляются три переменные типа int: N, E и M и инициализируются значениями, которые пользователь ввел. Затем объявляется массив r типа int размером (N2+1) на M. Далее в цикле происходит чтение элементов массива r. Сначала в каждой строке массива r считываются числа, которые пользователь ввел. Затем во внутреннем цикле считываются числа, которые пользователь ввел. Числа считываются в переменную r[j][i], но поскольку размер массива r по строке равен N2+1, а по столбцу равен M, то вводится проверка j<r[0][i]*2, чтобы не выйти за пределы массива. После считывания всех чисел выводится на экран первая строка массива r, затем все числа в столбцах этого массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы