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

Написать функцию, которая меняет местами первый и последний ряд матрицы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
udwik
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 16:37     Написать функцию, которая меняет местами первый и последний ряд матрицы #1
написать функциЮ которая меняеи местами первый и последний ряд матрицы(квадратной) и находит произведение элементов главной диагонали
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2010, 16:37     Написать функцию, которая меняет местами первый и последний ряд матрицы
Посмотрите здесь:

C++ Написать программу которая меняет местами элементы массива
Написать программу, которая меняет местами элементы массива C++
C++ Написать функцию которая в заданом числе меняет местами два бита с задаными номерами
Написать функцию, которая меняет местами два числа, которые передаются в нее через параметры по указателю C++
Поменять местами первый и последний ряды матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.01.2010, 17:20     Написать функцию, которая меняет местами первый и последний ряд матрицы #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <stdio.h>
#include <conio.h>
#define H 3
#define W 3
long swapUmn(int *matrix,int h,int w);
void main(){
int matrix[H][W] = {
    {1,2,3}, 
    {4,5,6},
    {7,8,9}
    };
 
printf("transform\n");
long prDiag = swapUmn(&matrix[0][0],H,W);  //трансформируем, и получаем произведени элемнетов диагонали
 
//выводим результат
for(int i=0;i<H;i++){
    for(int j=0;j<W;j++){
printf(" "); printf("%d",matrix[i][j]);
    }
printf("\n");
}
printf("\n");
//выводим произведение элементов диагонали
printf("%d",prDiag);
printf("\n");
getch();
}
long swapUmn(int *matrix,int h,int w){
int i = 0;      //первая строка
int j = h-1;    //последня строка
int s = 0;      //индекс столбца
//Обмен последней строки и первой
for(;s<w;s++){
int tmp = matrix[i*w+s];
matrix[i*w+s] = matrix[j*w+s];
matrix[j*w+s]=tmp;
}
 
//Находим произведение элементов диагонали
int pr = 1;
for(int q = 0,k=0;q<h||k<w;q++,k++)pr*=matrix[q*w+k];
return pr;
}
udwik
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 17:41  [ТС]     Написать функцию, которая меняет местами первый и последний ряд матрицы #3
тут все круто но надо только в С
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.01.2010, 17:47     Написать функцию, которая меняет местами первый и последний ряд матрицы #4
И так вроде на C, а что не компилируется.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
25.01.2010, 18:48     Написать функцию, которая меняет местами первый и последний ряд матрицы #5
И так вроде на C, а что не компилируется.
Это не C.
C++
1
for(int i=0;i<H;i++){
udwik
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 18:53  [ТС]     Написать функцию, которая меняет местами первый и последний ряд матрицы #6
это С.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
25.01.2010, 18:54     Написать функцию, которая меняет местами первый и последний ряд матрицы #7
Вы еще опрос создайте, С это или не С.
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
25.01.2010, 18:55     Написать функцию, которая меняет местами первый и последний ряд матрицы #8
Это не С, умник
С это
C
1
2
int i;
for (i=0;i<N;i++)
udwik
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 19:46  [ТС]     Написать функцию, которая меняет местами первый и последний ряд матрицы #9
в С тип переменной может объявляться в цикле
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
26.01.2010, 10:48     Написать функцию, которая меняет местами первый и последний ряд матрицы #10
2udwik тебе умные люди говорят что это не C.
Чего ты упираешься ?
в С тип переменной может объявляться в цикле
Внутри тела цикла может.
А вот внутри for ( ; ; ) не может.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
26.01.2010, 13:02     Написать функцию, которая меняет местами первый и последний ряд матрицы #11
Специально для умных людей выдержка из стандарта С99 (красным выделено)
Миниатюры
Написать функцию, которая меняет местами первый и последний ряд матрицы  
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
27.01.2010, 07:50     Написать функцию, которая меняет местами первый и последний ряд матрицы #12
выдержка из стандарта С99
По предыдущему стандарту не может.
Microsoft Visual Studio 2005/2008 не поддерживает C99.
И ?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
27.01.2010, 08:25     Написать функцию, которая меняет местами первый и последний ряд матрицы #13
Цитата Сообщение от odip Посмотреть сообщение
По предыдущему стандарту не может.
Ключевое слово "предыдущий". Язык развивается, а не стоит на месте.
Цитата Сообщение от odip Посмотреть сообщение
Microsoft Visual Studio 2005/2008 не поддерживает C99.
Поддержка стандарта со стороны производителей IDE не является особенностью языка.
Цитата Сообщение от odip Посмотреть сообщение
И ?
Это СИ.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.01.2010, 09:45     Написать функцию, которая меняет местами первый и последний ряд матрицы #14
Цитата Сообщение от udwik Посмотреть сообщение
в С тип переменной может объявляться в цикле
В C++. А в C, насколько мне известно, нельзя.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.01.2010, 10:52     Написать функцию, которая меняет местами первый и последний ряд матрицы #15
Цитата Сообщение от Gravity Посмотреть сообщение
Специально для умных людей выдержка из стандарта С99
Вы это разработчикам MS VS отправьте, а то они, видимо, не в курсе

Цитата Сообщение от taras atavin Посмотреть сообщение
А в C, насколько мне известно, нельзя.
В ANSI C 89 действительно нельзя, в ANSI C 99 можно, но этот стандарт не всеми компиляторами поддерживается. Кстати, кроме объявления переменных в заголовке for( ;; ) в С 99 есть много действительно полезных вещей. Откровенно не понимаю, почему мелкомягкие его вот уж больше 10 лет игнорируют...

Добавлено через 16 минут
для разнообразия:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
    
void swapRows(int **a, int **b){
    int *t;
    t = *a;
    *a = *b;
    *b = t;
}
 
long mulDiagonal(int **matr, int size){
    int mul = 1, i;
    for ( i = 0; i < size; ++i )
        mul *= matr[i][i];
    return mul;
}
 
#define ROW 5
 
int main(void){
    int **matr, i, j;
    
    srand(time(NULL));
    
    if ( ( matr = (int**)calloc(ROW, sizeof(int*)) ) == NULL )
        exit(1);
    for ( i = 0; i < ROW; ++i )
        if ( ( matr[i] = (int*)calloc(ROW, sizeof(int)) ) == NULL )
            exit(1);
    
    printf("\nMatrix:\n");
    for ( i = 0; i < ROW; ++i )
        for ( j = 0; j < ROW; ++j )
            printf( ( j < ROW - 1 ) ? "%2d " : "%2d\n", ( matr[i][j] = rand() % 10 ) );
    printf("\nSwap first and last rows:\n");
    swapRows(matr, matr + ROW - 1);
    for ( i = 0; i < ROW; ++i )
        for ( j = 0; j < ROW; ++j )
            printf( ( j < ROW - 1 ) ? "%2d " : "%2d\n", matr[i][j] );
            
    printf("\nMultiply of master diagonal = %ld\n", mulDiagonal(matr, ROW));
            
    for ( i = 0; i < ROW; ++i )
        free(matr[i]);
    free(matr);
    
    exit(0);
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.01.2010, 16:16     Написать функцию, которая меняет местами первый и последний ряд матрицы #16
1)функция меняет любые стобцы матрицы, ей нужно передать указатель на массив, его размерность, и номера столбцов которые надо поменять:
C++
1
2
3
4
5
6
7
8
9
int** SwapRow(int** Matrix,unsigned int count_row, unsigned int count_col, unsigned int x, unsigned int y){
     unsigned int buf=0;
     for (int i=0; i<count_row; i++){
         buf=Matrix[i][x];
         Matrix[i][x]=Matrix[i][y];
         Matrix[i][y]=buf;
     }
     return Matrix;
}
2) произведение- оно и в африке произведение)
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
27.01.2010, 19:34     Написать функцию, которая меняет местами первый и последний ряд матрицы #17
Да причем тут поддержка стандарта со стороны компиляторов?
Вопрос стоял следующим образом - допустима ли конструкция вида:
C++
1
for(int i = 0; i < n; ++i)
в языке Си.
Согласно последнему стандарту языка Си C99, ответ однозначен - да, допустима, см. пост Gravity #11.
Но такую конструкцию лучше не использовать т.к. не все компиляторы поддерживают стандарт C99.

Цитата Сообщение от udwik Посмотреть сообщение
это С.

Это ошибочно !
odip, как раз таки это верно. А править чужие посты из-за того, что мнение автора поста не совпадает с Вашим - ни как нельзя назвать поступком "умного" человека.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
28.01.2010, 07:40     Написать функцию, которая меняет местами первый и последний ряд матрицы #18
Поддержка стандарта со стороны производителей IDE не является особенностью языка.
При чем тут язык ?
Ты что сферическим компилятором компилируешь ?
В Visual Studio 2005/2008 ты эту конструкцию использовать не сможешь.
А тогда толку тебе от нее ?

Добавлено через 3 минуты
Вопрос стоял следующим образом - допустима ли конструкция вида ... в языке Си.
Вопрос поставлен не совсем корректно.
Язык C имеет несколько стандартов.
Согласно последнему стандарту языка Си C99, ответ однозначен - да, допустима
А согласно стандарту C89 и более старым конструкция недопустима.

Так о чем теперь будем спорить ?
Как трактовать неправильно заданный вопрос ?


Добавлено через 1 минуту
odip, как раз таки это верно. А править чужие посты из-за того, что мнение автора поста не совпадает с Вашим - ни как нельзя назвать поступком "умного" человека.
C точки зрения C89 это неверно.

Добавлено через 1 минуту
В ANSI C 89 действительно нельзя, в ANSI C 99 можно, но этот стандарт не всеми компиляторами поддерживается. Кстати, кроме объявления переменных в заголовке for( ;; ) в С 99 есть много действительно полезных вещей. Откровенно не понимаю, почему мелкомягкие его вот уж больше 10 лет игнорируют...
В новом Visual Studio 2010 вроде обещали поддержку C99.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.01.2010, 09:00     Написать функцию, которая меняет местами первый и последний ряд матрицы #19
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Да причем тут поддержка стандарта со стороны компиляторов?
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
в языке Си.
Согласно последнему стандарту языка Си C99, ответ однозначен - да, допустима, см. пост Gravity #11.
Но такую конструкцию лучше не использовать т.к. не все компиляторы поддерживают стандарт C99.

Не по теме:

Тот же %#@ только в профиль...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2010, 19:47     Написать функцию, которая меняет местами первый и последний ряд матрицы
Еще ссылки по теме:

Написать функцию, которая меняет местами значения двух целых C++
Написать функцию, которая меняет местами элементы указанной строки с элементами указанного столбца C++
C++ Класс "Строка" содержащий метод, который меняет местами первый и последний символы строки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.01.2010, 19:47     Написать функцию, которая меняет местами первый и последний ряд матрицы #20
Есть стандарт языка, а есть его поддержка со стороны компиляторов.
Давайте разделять эти понятия.

Стандарт диктует язык или разработчики компиляторов?

Давайте опираться именно на стандарт(ы), если мы говорим о возможностях языка как такового.
Yandex
Объявления
28.01.2010, 19:47     Написать функцию, которая меняет местами первый и последний ряд матрицы
Ответ Создать тему
Опции темы

Текущее время: 06:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru