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

Написать функцию - C++

Восстановить пароль Регистрация
 
Toxic
0 / 0 / 0
Регистрация: 19.10.2009
Сообщений: 14
10.12.2010, 17:54     Написать функцию #1
Написать функцию swap (A,B), меняющую местами максимальные элементы матриц A и B. (Считать, что в каждой матрице только один элемент максимальный).
Я писал функцию с глобальными переменными, а вот как с локальными незнаю точнее непойму как.
Если нетрудно то пожалуйста тест программы с некоторыми пояснениями наподобии "вот локальные переменные"
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2010, 17:54     Написать функцию
Посмотрите здесь:

написать функцию из 10 с.с в 16 C++
C++ Написать функцию.
C++ Написать функцию
C++ написать функцию в С++
Написать функцию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.12.2010, 18:35     Написать функцию #2
покажите то что у вас есть
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
10.12.2010, 18:52     Написать функцию #3
C
1
2
3
4
5
6
7
8
9
int main ()
{int **a, **b, n,m; 
 n=3; m=3;  //  вот локальная переменная
   // выделение памяти для двумерного массива а и b
swap (a,b,n,m) // вызов функции
 
 
return 0;
}
Toxic
0 / 0 / 0
Регистрация: 19.10.2009
Сообщений: 14
12.12.2010, 13:50  [ТС]     Написать функцию #4
Добавлено через 43 секунды
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
#include "stdafx.h"
#include "stdlib.h"
 
int A[3],B[3],i;
void swap()
{   
int maxA,maxB,c,maxa_i,maxb_i;
maxa_i=0;
maxb_i=0;
maxA=1;
maxB=1;
c=0;
for (i=0;i<3;i++)
{
    
A[i]=rand()%30;
B[i]=rand()%30;
printf ("A[%i] = %i   B[%i] = %i\n",i,A[i],i,B[i]);
};
    for (i=0;i<3;i++)
    {
        if (maxa_i<A[i]) { maxa_i=A[i]; maxA=i;};
        if (maxa_i<B[i]) {maxb_i=B[i]; maxB=i;};
        };
c=A[maxA];
A[maxA]=B[maxB];
B[maxB]=c;
    
printf ("\n");
for (i=0;i<3;i++)
printf ("A[%i] = %i   B[%i] = %i\n",i,A[i],i,B[i]);
 
}
int main()
{
swap();
}
Вот вобщемто мой вариант, но вот как сделать чтоб работало с локальными у меня так и неполучилось.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.12.2010, 14:02     Написать функцию #5
Toxic, так у васм нету матриц. Вы используете одномерные массивы!!!!
Toxic
0 / 0 / 0
Регистрация: 19.10.2009
Сообщений: 14
12.12.2010, 14:08  [ТС]     Написать функцию #6
ну так я вроде и неговорил что поменять местами макс. элементы двух матриц. У меня проблема с написанием в функции локальных переменных и вызовом их в самой программи
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2010, 16:15     Написать функцию #7
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
#include "stdafx.h"
#include "stdlib.h"
 
 
void swap(int *A, int *B)
{       
int i=0;
int maxA,maxB,c,maxa_i,maxb_i;
maxa_i=0;
maxb_i=0;
maxA=1;
maxB=1;
c=0;
for (i=0;i<3;i++)
{
        
A[i]=rand()%30;
B[i]=rand()%30;
printf ("A[%d] = %d   B[%d] = %d\n",i,A[i],i,B[i]);
};
        for (i=0;i<3;i++)
        {
                if (maxa_i<A[i]) { maxa_i=A[i]; maxA=i;};
                if (maxa_i<B[i]) {maxb_i=B[i]; maxB=i;};
                };
c=A[maxA];
A[maxA]=B[maxB];
B[maxB]=c;
        
printf ("\n");
for (i=0;i<3;i++)
printf ("A[%d] = %d   B[%d] = %d\n",i,A[i],i,B[i]);
 
}
int main()
{int A[3],B[3]; // локальные объявления
swap(A,B);     //  отправляем в функцию указатель на первый элемент
}
вот пожалуйста с локальными данными
только у Вас нет матриц, не смотря на то, что у Вас одномерный массив
еще что-нибудь переделать???
Toxic
0 / 0 / 0
Регистрация: 19.10.2009
Сообщений: 14
12.12.2010, 19:16  [ТС]     Написать функцию #8
Спасибо большое.

Добавлено через 24 минуты
хотя нет вот ещё одна задачка.
Найти наибольший и наименьший элементы матрицы R(K,N) и поменять их
местами. K<=20, N<=10.
Найти то ладно, а вот поменять сложнее.
я написал вот так :
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
#include <stdafx.h>
#include <stdlib.h>
 
int main()
{ 
    int r[21][11],mi,ma,mo,min_ri,min_rj,max_ri,max_rj,a,b;
    mo=0;
    a=0;
    b=0;
    min_ri=0;
    min_rj=0;
    max_ri=0;
    max_rj=0;
    for (int i=0;i<21;i++)
        for (int j=0;j<11;j++)
        { r[i][j]=rand()%100;
        printf(" %d", r[i][j]);
    };
    mi=r[0][0];
    ma=r[0][0];
    for (int i=0;i<21;i++)
        for (int j=0;j<11;j++)
        {
            if (mi>r[i][j]) {min_ri=i; min_rj=j; mi=r[i][j];};
            if (ma<r[i][j]) {max_ri=i; max_rj=j; ma=r[i][j];};
                    
        };
a=min_ri;
b=min_rj;
min_ri=max_ri;
min_rj=max_rj;
max_ri=a;
max_rj=b;
printf ("posle peremeny ix mestami\n");
for (int i=0;i<21;i++)
        for (int j=0;j<11;j++)
        {printf(" %d", r[i][j]);
        };
}
но вот только неработает, неменяет.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2010, 19:28     Написать функцию #9
меняйте используя доп. переменную
при поиске запоминайте индексы мак и мин элемента
никто за вас код писать не будет!
Toxic
0 / 0 / 0
Регистрация: 19.10.2009
Сообщений: 14
12.12.2010, 19:37  [ТС]     Написать функцию #10
индексы запоминаю я. но есть ошибка но не как непойму в чём.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2010, 20:05     Написать функцию
Еще ссылки по теме:

C++ Написать встроенную функцию min () и обычную функцию imin (), которые возвращают меньшее из двух целых значений
написать функцию C++
C++ рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую операцию с переданным х

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2010, 20:05     Написать функцию #11
C
1
2
3
4
5
6
7
8
9
10
11
12
int min;   // мин. элемент
int max;   //  макс. элемент
int min_i;  // индекс мин. элемента и т.д.
int min_j;  //
int max_i; //
int max_j;  //
 
// замена
 
 
mt[max_i][max_j]=min;
mt[min_i][min_j]=max;
Yandex
Объявления
12.12.2010, 20:05     Написать функцию
Ответ Создать тему
Опции темы

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