Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

В каждой строке матрицы переставить в обратном порядке элементы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблема с выводом строки http://www.cyberforum.ru/cpp-beginners/thread356557.html
#include<iostream> #include<string> #include<conio.h> #define SIZE 100 using namespace std; class Adress { char fam; char street;
C++ Описать структуру с именем TRAIN Помогите написать листининг программы, со следующим заданием. Описать структуру с именем TRAIN содержащую след. поля: 1. название пункта назначения 2. номер поезда 3. время отправления... http://www.cyberforum.ru/cpp-beginners/thread356529.html
Задача Покер C++
Даны 5 целых чисел. Среди них: если одинаковы 5, то вывести "Impossible", иначе если одинаковы 4, то вывести "Four of a Kind", иначе если одинаковы 3 и 2, то вывести "Full House", иначе если...
Задачи на с++ с решениями C++
Given an integer number N THAT IS NOT LESS THAN 2. OUTPUT THE SMALLEST NATURAL DIVISOR OF THE N (NOT INCLUDING 1) input 15 output 3 ПОМОГИТЕ ПОЖАЛУЙСТА СРОЧНО РЕШИТЬ
C++ c++ c решением http://www.cyberforum.ru/cpp-beginners/thread356493.html
Given an integer number N THAT IS NOT LESS THAN 2. OUTPUT THE SMALLEST NATURAL DIVISOR OF THE N (NOT INCLUDING 1) input 15 output 3 ПОМОГИТЕ ПОЖАЛУЙСТА СРОЧНО РЕШИТЬ
C++ Дано натуральное число. Определить минимальную цифру этого числа Given a positive integer N.Write a program that determines the smallest digit which can be found in number подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
26.09.2011, 18:45
Цитата Сообщение от Алён4uk Посмотреть сообщение
ничего не понимаю
А так?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
// заполняет одномерный массив случайными значениями в диапазоне [lo; hi]
void random_fill_row(int * row, size_t size, int lo, int hi){
    while ( size-- )
        *row++ = rand() % ( hi - lo + 1 ) + lo;
}
 
// заполняет матрицу случайными значениями, работает только с дин. массивами
void random_fill_matrix(int ** matrix, size_t rows, size_t columns, int lo, int hi){
    while ( rows-- )
        random_fill_row(*matrix++, columns, lo, hi);
}
 
// выводит строку на экран
void dump_row(const int * arr, size_t size, size_t width){
    while ( size-- )
        printf("%0*d%c", width, *arr++, ( size ) ? ' ' : '\n');
}
 
// выводит матрицу
void dump_matrix(int ** matrix, size_t rows, size_t columns, size_t width){
    while ( rows-- )
        dump_row(*matrix++, columns, width);
}
 
// возвращает указатель на первый максимальный элемент в строке
int * max_element(const int * arr, size_t size){
    return ( size < 2 ) ? (int*)arr : ( *arr < *(arr + size - 1) ) ? max_element(arr + 1, size - 1) : max_element(arr, size - 1);
}
 
// переворачивает значения элементов между переданными указателями в строке
void swap_parth(int * after, int * before){
    if ( before - after > 1 ){
        int t = *(after + 1);
        *(after + 1) = *(before - 1);
        *(before - 1) = t;
        swap_parth(++after, --before);
    }
}
 
#define HI 99
#define LO 0
#define WIDTH 2
// точка входа в программу
int main(void){
    int ** matrix;
    size_t rows, columns, i;
    
    printf("Rows: ");
    if ( scanf("%u", &rows) != 1 )
        exit(1);
    printf("Columns: ");
    if ( scanf("%u", &columns) != 1 )
        exit(1);
    
    if ( ! ( matrix = malloc(sizeof(int*) * rows) ) ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    for ( i = 0; i < rows; ++i ){
        if ( ! ( matrix[i] = malloc(sizeof(int) * columns) ) ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
    }
    
    srand(time(NULL));
    
    random_fill_matrix(matrix, rows, columns, LO, HI);
    printf("Before:\n");
    dump_matrix(matrix, rows, columns, WIDTH);
    for ( i = 0; i < rows; ++i )
        swap_parth(max_element(matrix[i], columns), matrix[i] + columns - 1);
    printf("After:\n");
    dump_matrix(matrix, rows, columns, WIDTH);
    
    for ( i = 0; i < rows; ++i )
        free(matrix[i]);
    free(matrix);
    
    system("pause");
    exit(0);
}

Не по теме:

Аватарка понравилась... Луч света в царстве анимешных персонажей, черепков и прочей нежити...

1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru