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

МАТРИЦА - C++

Восстановить пароль Регистрация
 
complete noob
0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 16
24.06.2011, 13:09     МАТРИЦА #1
Всем привет, у меня такая загвоздка, не умею использовать функции и модули. Помогите кто чем может.

Примечание:
1) Составить программу на языке C++, состоящую из двух функций с использованием указателей.В главной функции выполнить ввод двумерного массива и вывод полученных результатов.
В вызываемой функции выполнить обработку двумерного массива.
2)Составить программу, состоящую из двух модулей:
1. В модуле на языке С++ ввести двумерный массив и вывести полученные результаты;
2. В модуле на языке ассемблер выполнить обработку двумерного массива.


Задание: Дана матрица порядка n. В каждой строке найти максимум среди четных элементов, а в каждом столбце минимум нечетных элементов.

Сделал без функции и модуля
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
//Variant 13
#include<iostream.h>
#include<math.h>
#include<conio.h>
main()
{int i,j,*a,k,sum,max,min;
clrscr();
cout<<"vvod poriadka\n ";
a=new int[k*k];
cin>>k;
cout<<"vvod matrici\n";
for(i=0;i<k;i++)
   for(j=0;j<k;j++)
   cin>>*(a+k*i+j);
cout<<"max v strokax ";
for(i=0;i<k;i++)
   {max=-99;
   for(j=0;j<k;j++)
   if ((*(a+k*i+j)>max)&(*(a+k*i+j)%2==0))
    {max=*(a+k*i+j);
    cout<<max;
    cout<<" ";
    }
    else cout<<"";
   }
cout<<"\n";
cout<<"min v stolbcah ";
for(j=0;j<k;j++)
   {min=99;
   for(i=0;i<k;i++)
   if ((min>*(a+k*i+j))&(*(a+k*i+j)%2!=0))
    {min=*(a+k*i+j);
    cout<<min;
    cout<<" ";
    }
    else cout<<"";
 
   }
   getch();
 
}
Пытался, сделать вот что вышло(функция):
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
//Variant 13
#include<iostream.h>
#include<math.h>
#include<conio.h>
int mas(int max,int min)
{int *a,j,i,k;
 clrscr();
 cout<<"vvod poriadka\n ";
 a=new int[k*k];
 cin>>k;
 cout<<"vvod matrici\n";
 for(i=0;i<k;i++)
   for(j=0;j<k;j++)
   cin>>*(a+k*i+j);
 cout<<"max v strokax ";
 for(i=0;i<k;i++)
   {max=-99;
   for(j=0;j<k;j++)
   if ((*(a+k*i+j)>max)&(*(a+k*i+j)%2==0))
    max=*(a+k*i+j);
   }
 cout<<"\n";
 cout<<"min v stolbcah ";
 for(j=0;j<k;j++)
   {min=99;
   for(i=0;i<k;i++)
   if ((min>*(a+k*i+j))&(*(a+k*i+j)%2!=0))
    min=*(a+k*i+j);
 
   }
return max,min;
}
int main()
{
int s;
s=mas(1,1);
cout<<s," ";
 
   getch();
return 0;
}
Заранее кто поможет большое спасибо

Добавлено через 3 часа 52 минуты
Кто-нибудь поможет, а то я в С++ ваще не разбираюсь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2011, 13:09     МАТРИЦА
Посмотрите здесь:

матрица C++
матрица C++
C++ матрица
C++ Матрица
C++ Матрица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Daemon025
 Аватар для Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
24.06.2011, 14:14     МАТРИЦА #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
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <time.h>
#include <stdio.h>
 
#define N 10
 
void maxInRow   (int**);
void minInColumn(int**);
 
int main()
{
    int** arr =new int*[N];
    
    for (int i=0; i<N; i++)
        arr[i] = new int[N];
        
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++)
        {
            arr[i][j] = rand() % 50 + 10;
            std::cout << arr[i][j] << " ";    
        }
        std::cout << std::endl;
    }
    
    maxInRow(arr);
    minInColumn(arr);
     
    delete[] arr; 
    std::cin.get();       
    return 0;   
}
 
void maxInRow(int** arr)
{
     std::cout << std::endl;
     for (int i=0; i<N; i++)
     {
         int max = arr[i][0];
         for (int j=2; j<N; j+=2)
             if (arr[i][j] > max) max = arr[i][j];
         std::cout << "Row " << i << " Max: " << max << std::endl;
     }
}
 
void minInColumn(int** arr)
{
     std::cout << std::endl;
     for (int j=0; j<N; j++)
     {
         int min = arr[1][j];
         for (int i=1; i<N; i+=2)
             if (min > arr[i][j]) min = arr[i][j];
         std::cout << "Column " << j << " Min: " << min << std::endl;
     }
}
complete noob
0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 16
24.06.2011, 15:22  [ТС]     МАТРИЦА #3
Можно как-нибудь поподробней,прокомментировать код
C++
1
#define N 10
это размерность матрицы?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.06.2011, 15:31     МАТРИЦА #4
Цитата Сообщение от complete noob Посмотреть сообщение
Можно как-нибудь поподробней,прокомментировать код
C++
1
#define N 10
это размерность матрицы?
Да, это размер квадратной матрицы.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.06.2011, 15:50     МАТРИЦА #5
Твою задачу не понял или ты имел виду внешние модули на C++(DLL) и ASM внешний extern модуль с компонованый в объектный файл или встроенного ASM.

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
#include <stdio.h>
 
 
// поиск значения
int    find_value(int** arr, int cols, int rows, int  _value) {
    int inx = -1;
    __asm {
        mov  edx, dword ptr cols       
        mov  eax, dword ptr rows
        mul   edx
        mov  edx, eax    
        xor    ecx, ecx
        mov  esi,  arr
next:
        mov  ebx, 0
prev:
        mov  edi, dword ptr [esi+ecx*4]
                      cmp  edi, dword ptr _value
        jne    jump;
        mov  dword ptr inx, ebx
        jmp   end;
jump:
        inc    ecx
        inc    ebx
        cmp  ebx, dword ptr  cols
        jb     prev;
 
        cmp   ecx, edx
        jl       next;
end:
    };
 
    return  inx;
}
 
 
 
 
 
 void  main(void){
 
    const int  rows = 5;
    const int  cols  = 3;
 
 
    int  arr[rows][cols] = {
        {  10,  11,  70 },
        {  20,  12,  51 },
        {  70,  10,  52 },
        {  40,  15,  30 },
        {  80,  16,  90 }
    };
 
           // поиск значения, возвращает индекс столбца
    int index = find_value((int**)arr, cols, rows, 80);
    if(index != -1)
        printf("column find value = %d\n", index);
 
 
    for(int r = 0; r < rows; r++) {
        for(int c = 0; c < cols; c++) 
             printf("%d\t", arr[r][c] );
        printf("\n");
    }
 
           getchar();
}
complete noob
0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 16
24.06.2011, 16:12  [ТС]     МАТРИЦА #6
На 14 строчке ругается, компилятор говорить несколько декларации i
C++
1
 for (int i=0; i<N; i++)
ошибка
C++
1
multiple declaration 'i'
Добавлено через 4 минуты
То что Daemon025

Добавлено через 1 минуту
xAtom, да, я сам не до конца разобрался с модулями, только щас понял что язык Асм нужно преминять

Добавлено через 11 минут
xAtom наверно просто с использованием кода Ассемблер
Yandex
Объявления
24.06.2011, 16:12     МАТРИЦА
Ответ Создать тему
Опции темы

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