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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
#1

Ошибка - C++

23.03.2010, 12:42. Просмотров 239. Ответов 3
Метки нет (Все метки)

всем дорбого дня.
я не могу найти ошибку в моем листинге....
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <iomanip.h>
#define N 3
#define M 2
 
void downmassiv(int* A,int* B);
void input(int *mass,int m,int n)
{
     int i,j;
     for(i=0;i<m;i++)
     {
                     for(j=0;j<n;j++)
                     {
                                     cout<<"mass["<<i<<"]["<<j<<"]=";
                     cin>>*(mass+i*n+j);
                     }
                     }
     }
     
void output(int *mass,int m,int n)
{
     int i,j;
     for(i=0;i<m;i++)
     {
                     for(j=0;j<n;j++)
                     {
                                     cout<<setw(5)<<*(mass+i*n+j);
                     }
                     cout<<"\n";   
         
                     }
                     }
 
 
int main()
{      
     int A[M][N], B[N][M],i,j,k;
         cout<<"\n vvodim A:\n";
     input(&A[0][0],M,N);
         cout<<"\n vvodim B:\n";
     input(&B[0][0],N,M);
      downmassiv(*A,*B);
      cout<<"\n vivodim A:\n";
     output(&A[0][0],M,N);
         cout<<"\n vivodim B:\n";
     output(&B[0][0],N,M);
     getch();
}
 
void downmassiv(int* A, int* B)
{  int i,j;
   for(i=0;i<N;i++)
   { for(j=0;j<M;j++)
     { if(A[i][j]<0)
      A[i][j]*=A[i][j];
      if(B[i][j]<0)
      B[i][j]*=B[i][j]; }             }
     
     
     }
Dev C++

Добавлено через 1 минуту
PS
Задание:
Поменять отрицательные элементы массива на их квадратты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.03.2010, 12:48     Ошибка #2
функция downmassiv принимает указатель, к которому ты пытаешься обратится как к двумерному массиву, либо надо чтобы она принимала int **, либо обращаться к элементам как ты делал в других функциях: (mass+i*n+j);
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.03.2010, 13:17  [ТС]     Ошибка #3
можно точнее где имено?
я исправил " ** "
и все равно ошибка :?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.03.2010, 13:31     Ошибка #4
Функцию downmassiv перепиши вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void downmassiv(int* A, int* B)
{  
    int i,j;
    for(i=0;i<N;i++)
    { 
        for(j=0;j<M;j++)
        { 
            if(A[N*i+j]<0)
                A[N*i+j] *= A[N*i+j];
            if(B[N*i+j]<0)
                B[N*i+j] *= B[N*i+j]; 
        }             
    }
}
А вызывай ее вот так:
C++
1
downmassiv(A[0],B[0]);
Yandex
Объявления
23.03.2010, 13:31     Ошибка
Ответ Создать тему
Опции темы

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