Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2012, 13:18   #1
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
По умолчанию scanf и матрица

Всем привет! Пишу программу, которая делает обход графа в ширину и глубину.
Возникла проблема: как вызвать scanf от неопределенного заранее числа параметров (мы не знаем заранее, сколько столбцов будет в матрице смежности/инцидентности)?

Что можно сделать?
Berlioz вне форума Ответить с цитированием
Старый 22.09.2012, 13:44   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А нельзя разве в цикле сделать n сканфов?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 23.09.2012, 18:21   #3
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
По умолчанию

Я тоже подумывал об этом поначалу. Однако, когда у нас матрица 10x10, то как-то уже не хочется 100 раз вбивать значения.
Я пока думаю сделать разбор строки.

Еще есть соображения?
Berlioz вне форума Ответить с цитированием
Старый 23.09.2012, 18:49   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int size = 2;
    int a[size][size];
    for (int i = 0; i < size; ++i) {
        for (int j = 0; j < size; ++j) {
            scanf("%d", &a[i][j]);
        }
    }
    for (int i = 0; i < size; ++i) {
        for (int j = 0; j < size; ++j) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
Вбиваете 4 числа через пробел и нажимаете enter.
Массив будет заполнен.
Цитата:
то как-то уже не хочется 100 раз вбивать значения
Ну тогда сделать ввод из файла, чтобы каждый раз не вбивать столько чисел.
Например:
tmp.exe - программа
1.txt - входные данные
2.txt - результаты программы
start.bat - batch файл для запуска программы
В start.bat записано:
Цитата:
tmp.exe<1.txt>2.txt
В 1.txt записано:
Цитата:
1 2 3 4
В 2.txt окажется:
Цитата:
1 2
3 4
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 23.09.2012 в 18:52.
BDA на форуме Ответить с цитированием
Старый 24.09.2012, 15:12   #5
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
По умолчанию

BDA, спасибо! До трюка с файлом я не додумался!
Berlioz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывая нулей scanf nukede Общие вопросы C/C++ 3 05.04.2012 21:44
Проблема с функцией scanf() ichigo9911 Общие вопросы C/C++ 1 26.02.2012 21:12
аналог scanf() turtles Общие вопросы по Java, Java SE, Kotlin 1 09.04.2011 10:33
обработка ошибки, scanf(), Си. krwlr Помощь студентам 3 05.04.2010 16:58
Нужна помощь по C, scanf() Sailorotec Общие вопросы C/C++ 7 02.12.2009 13:04