Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2009, 14:54   #11
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Что-то Вы намудрили с аргументами.
Код:
arifm(m,*d);
Цитата:
1. Замените все положительные элементы массива на нулевые.
2. Дана квадратная матрица. Найти среднее арифметическое положительных элементов каждого столбца.
Это все в квадратной матрице? Или 1 просто массив (одномерный, двухмерный)?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 15.12.2009, 15:43   #12
alstan
 
Регистрация: 15.03.2009
Сообщений: 8
По умолчанию

да эти 4 ошибки(

в 1 любая матрица, а во 2ой только квадратная
1ая всё работает, а вот со 2ой беда(

может кто предложит по другому 2 решить?

Последний раз редактировалось Stilet; 15.12.2009 в 16:08.
alstan вне форума Ответить с цитированием
Старый 15.12.2009, 16:03   #13
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Вот смотрите.
В первой функции вы в качестве аргументов передали размерность матрицы и саму матрицу, т.е
Код:
void zamena(int n,int m,int **a)
Функция знала с чем ей работать.
Во второй функции
Код:
 int arifm (int m, int d)
Вам необходимо поступить так же. И что за массив d[10] у Вас объявлен?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 15.12.2009, 16:18   #14
alstan
 
Регистрация: 15.03.2009
Сообщений: 8
По умолчанию

массив d[10] - туда записываются эллементы подходящие по условию (т.е. те что больше 0)
alstan вне форума Ответить с цитированием
Старый 15.12.2009, 17:10   #15
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
#include<conio>
#include<string>
#include<stdlib>
#include<iostream>
#include<stdio>
void zamena (int n,int m,int **a);
void arifm (int m, int n, int **a);

int main()
{
int n,m,i,j,k,s;
int **a;
printf("vvedite n:");
scanf("%d",&n);
printf("vvedite m:");
scanf("%d",&m);
a=(int**)malloc(n*sizeof(int*));
for (i=0;i<n;i++)
a[i]=(int*)malloc(m*sizeof(int));
printf("vvedite elementy:");

for (i=0;i<n;i++)
for (j=0;j<m;j++)
scanf("%d",&a[i][j]);

for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
zamena(n,m,a);
arifm(m,m,a);
getch();
return 0;
}

void zamena(int n,int m,int **a)
{
int i,j;
for (i=0;i<n;i++)
 for (j=0;j<m;j++)
{
if (a[i][j]>0)
 a[i][j]=0;
}
 for (i=0;i<n;i++)
 {
 for (j=0;j<m;j++)
  printf("%d \t",a[i][j]);
  printf("\n");
  }
  }

void arifm(int m, int n, int **a)
{
int *d, k;
d=(int*)calloc(m, sizeof(int));
int i,j;
for (i=0;i<m;i++)
 d[i]=0;
for (i=0;i<n;i++)
{
k=0;
 for (j=0;j<m;j++)
{
if (a[j][i]>0)
d[i]+=a[j][i];
k++;
}
d[i]=(d[i]/k);
}
for (j=0;j<m;j++)
if (d[j]!=0)
printf("%d", d[j]);
}
Только Вам необходимо или выбирать функцию, или поменять их местами в программе, так как после замены вместо положительных нули
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 15.12.2009 в 17:26.
Sweta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка Lacrimoso Общие вопросы C/C++ 11 24.09.2009 23:14
проблемка lucky Паскаль, Turbo Pascal, PascalABC.NET 1 12.05.2009 22:32
проблемка( Alexcomeback Общие вопросы C/C++ 4 16.04.2009 18:38