Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18

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

25.01.2010, 16:37. Показов 4074. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написать функциЮ которая меняеи местами первый и последний ряд матрицы(квадратной) и находит произведение элементов главной диагонали
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2010, 16:37
Ответы с готовыми решениями:

Как написать программу, которая меняет местами первую строку и последний столбец квадратной матрицы?
Здравствуйте, мне дали задание сгенерировать квадратную матрицу, на промежутке от а до b, и поменять местами первую строку и последний...

Написать функцию, которая меняет местами значения двух целых
Нужен рабочий код по решению задачи в С++ : «Напишите функцию которая меняет местами значения двух целых. В качестве типа параметров...

Создать функцию, которая меняет местами первую и последнюю строки квадратной матрицы
Создать функцию, которая меняет местами первую и последнюю строки квадратной матрицы и находит произведение элементов главной диагонали.

20
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
25.01.2010, 17:20
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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;
}
1
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 17:41  [ТС]
тут все круто но надо только в С
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
25.01.2010, 17:47
И так вроде на C, а что не компилируется.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
25.01.2010, 18:48
И так вроде на C, а что не компилируется.
Это не C.
C++
1
for(int i=0;i<H;i++){
0
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 18:53  [ТС]
это С.
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
25.01.2010, 18:54
Вы еще опрос создайте, С это или не С.
0
Быдлокодер
 Аватар для Darky
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
25.01.2010, 18:55
Это не С, умник
С это
C
1
2
int i;
for (i=0;i<N;i++)
0
0 / 0 / 0
Регистрация: 17.12.2009
Сообщений: 18
25.01.2010, 19:46  [ТС]
в С тип переменной может объявляться в цикле
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
26.01.2010, 10:48
2udwik тебе умные люди говорят что это не C.
Чего ты упираешься ?
в С тип переменной может объявляться в цикле
Внутри тела цикла может.
А вот внутри for ( ; ; ) не может.
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
26.01.2010, 13:02
Специально для умных людей выдержка из стандарта С99 (красным выделено)
Миниатюры
Написать функцию, которая меняет местами первый и последний ряд матрицы  
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.01.2010, 07:50
выдержка из стандарта С99
По предыдущему стандарту не может.
Microsoft Visual Studio 2005/2008 не поддерживает C99.
И ?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
27.01.2010, 08:25
Цитата Сообщение от odip Посмотреть сообщение
По предыдущему стандарту не может.
Ключевое слово "предыдущий". Язык развивается, а не стоит на месте.
Цитата Сообщение от odip Посмотреть сообщение
Microsoft Visual Studio 2005/2008 не поддерживает C99.
Поддержка стандарта со стороны производителей IDE не является особенностью языка.
Цитата Сообщение от odip Посмотреть сообщение
И ?
Это СИ.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.01.2010, 09:45
Цитата Сообщение от udwik Посмотреть сообщение
в С тип переменной может объявляться в цикле
В C++. А в C, насколько мне известно, нельзя.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
27.01.2010, 10:52
Цитата Сообщение от 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);
}
0
ниначмуроФ
 Аватар для PointsEqual
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
27.01.2010, 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) произведение- оно и в африке произведение)
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
27.01.2010, 19:34
Да причем тут поддержка стандарта со стороны компиляторов?
Вопрос стоял следующим образом - допустима ли конструкция вида:
C++
1
for(int i = 0; i < n; ++i)
в языке Си.
Согласно последнему стандарту языка Си C99, ответ однозначен - да, допустима, см. пост Gravity #11.
Но такую конструкцию лучше не использовать т.к. не все компиляторы поддерживают стандарт C99.

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

Это ошибочно !
odip, как раз таки это верно. А править чужие посты из-за того, что мнение автора поста не совпадает с Вашим - ни как нельзя назвать поступком "умного" человека.
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
28.01.2010, 07:40
Поддержка стандарта со стороны производителей 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.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
28.01.2010, 09:00
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Да причем тут поддержка стандарта со стороны компиляторов?
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
в языке Си.
Согласно последнему стандарту языка Си C99, ответ однозначен - да, допустима, см. пост Gravity #11.
Но такую конструкцию лучше не использовать т.к. не все компиляторы поддерживают стандарт C99.

Не по теме:

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

0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
28.01.2010, 19:47
Есть стандарт языка, а есть его поддержка со стороны компиляторов.
Давайте разделять эти понятия.

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

Давайте опираться именно на стандарт(ы), если мы говорим о возможностях языка как такового.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2010, 19:47
Помогаю со студенческими работами здесь

Написать функцию которая в заданом числе меняет местами два бита с задаными номерами
Сижу на экзамене очень сильно нужна помощь: задание - написать функцию которая в заданом числе меняет местами два бита с задаными...

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

Написать функцию, которая меняет местами два числа, которые передаются в нее через параметры по указателю
Я самое наглое , ленивое и бессовестное чудовище)) но тем не менее Напишите функцию, которая меняет местами два числа типа unsigned...

Класс "Строка" содержащий метод, который меняет местами первый и последний символы строки
Написать программу чтобы первый и последний символы строки менялись местами. На экран выводился оригинал и измененная строка. Все это с...

Поменять местами первый и последний столбец матрицы
Поменять местами первый и последний столбец матрицы


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru