Применение_векторов_в_качестве_параметров_функции. Функции и массивы. Аргументы командной строки. Студент ki 1221рус
Скачать 57.5 Kb.
|
100)void fillMatrix( int ** M, int size ) { for ( int i = 0; i < size; ++i ) { for ( int j = 0; j < size; ++j ) { M[i][j] = rand() % 100; } } } // Функция транспонирует квадратную матрицу void transposeMatrix( int ** M, int size ) { for ( int i = 0; i < size; ++i ) { for ( int j = 0; j < i; j++ ) { int tmp = M[i][j]; M[i][j] = M[j][i]; M[j][i] = tmp; } } } // Функция выводит матрицу на экран void displayMatrix( const int ** M, int size, char * prefix = NULL ) { if ( prefix ) std::cout << prefix << std::endl; for ( int i = 0; i < size; ++i ) { for ( int j = 0; j < size; ++j ) std::cout << M[i][j] << " "; std::cout << std::endl; } } int main( int argc, char *argv[] ) { // Задали размер int size = 5; // Выделили память int ** M = allocateMatrix( size ); // Заполнили матрицу случаными числами fillMatrix( M, size ); // Выводим исходную матрицу displayMatrix( M, size, "Initial:" ); // Транспонируем матрицу transposeMatrix( M, size ); // Выводим транспонированную матрицу displayMatrix( M, size, "Transposed:" ); // Освобождаем память freeMatrix( M, size ); system( "pause" ); } Аргументы командной строки. При запуске консольной программы, как правило, информация ей передается в командной строке в виде строки параметров. Например, для копирования файлов стандартной программой copy нужно в качестве параметров передать имена файлов: copy c:\1.txt d:\2.txt Указанные параметры командной строки передаются в основную функцию main и могут быть получены из массива С-строк с именем argv. Количество параметров передается через аргумент argc. Развернутый прототип функции main будет выглядеть следующим образом: int main( int argc, char *argv[] ) В первом элементе массива строк argv (с индексом 0) всегда будет передаваться имя исполняемого файла, а все остальные элементы (с индексами от 1 до argc-1) будут содержать параметры (в командной строке они разделяются пробелами). Следующий пример иллюстрирует работу с параметрами командной строки. Программа создает файл с указанным именем и заполняет его заданным символом в заданном количестве: int main( int argc, char *argv[] ) { // В командной строке не передали имя файла if ( argc < 2 ) { std::cout << "Необходимо указать имя файла!" << std::endl; return 0; } // Имя файла char * fname = argv[1]; // Используемый символ, по умолчанию - 'A' char symbol = 'A'; // Ограничение на максимально допустимое число символов const int MAX_COUNT = 256; // Требуемое количество символов, по умолчанию - максимум int count = MAX_COUNT; // Если в командной строке передали символ - используем его if ( argc >= 3 ) symbol = argv[2][0]; // Если в командной строке передали количество - используем его if ( argc >= 4 ) count = std::min( atoi( argv[3] ), MAX_COUNT ); if ( count < 0 ) { cout << "Ошибка, недопустимое количество символов!" << endl; return 0; } ofstream f( fname ); if ( ! f ) { cout << "Ошибка создания файла!" << endl; return 0; } cout << "Заполняем файл " << fname << " " << count << " символами " << symbol << endl; for ( int i = 0; i < count; ++i ) f << symbol << " "; f.close(); cout << "Готово!" << endl; } |