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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 17:24   #1
Sabolch
Пользователь
 
Аватар для Sabolch
 
Регистрация: 19.11.2010
Сообщений: 19
По умолчанию работа с матрицой на Си

1) найти сумму положительных элементов матрицы А, находящихся выше главной диагонали

и вот что я сделал.....точнее начал....
Код:
 #include <stdio.h>
#include <conio.h>
#include <iostream.h>
void main()
{ int i, j, n, m, S;
int a[56][78]
clerser();
cout<<"введите число строк";
cin>>n
cout<<"введите число столбцов";
cin>>m
for (i=1;i=>n; i++)
for (j=1; j=>m; j++)
}
cout<<"a["<<i<<j<<"]=";
cin a[i][j]
}
for (i=1, n-1; i++)
for (j
впрочем надо докончить.... на Си
если вам не очень трудно, то с объяснениями(пояснениями) пожалуйста...

Последний раз редактировалось Stilet; 24.11.2010 в 19:00.
Sabolch вне форума Ответить с цитированием
Старый 24.11.2010, 18:03   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Как-то так будет:
Код:
int main(){
	
	int m,n,summ=0;
	
	printf("enter matrix dimension\n");
	
	scanf("%d %d",&n,&m);
	
//=========память под массив размерности m на n=========
	int **mass=(int **)malloc(n*sizeof(int*));
	for(int i=0;i<m;i++) mass[i]=(int*) malloc(m*sizeof(int));

	printf("enter the matrix members\n");
	
	for(int i=0;i<n;i++)
	  for(int j=0;j<m;j++) scanf("%d",&mass[i][j]);
   //=======вывод массива на экран==========  
	for(int i=0;i<n;i++){
	  for(int j=0;j<m;j++) printf("%d  ",mass[i][j]);
	  printf("\n"); 
	}  
 //==========поиск положительных элементов выше главной диагонали
	for(int i=0;i<n;i++)
	  for(int j=i+1;j<m;j++) if(mass[i][j]>0) summ+=mass[i][j];
	  
	printf("summa positive membersbers = %d" , summ);
	free(mass);  
	return 0;
}
Единственный способ стать умнее - играть с более умным противником.

Последний раз редактировалось Sam Gold; 24.11.2010 в 18:06.
Sam Gold вне форума Ответить с цитированием
Старый 24.11.2010, 18:14   #3
Sabolch
Пользователь
 
Аватар для Sabolch
 
Регистрация: 19.11.2010
Сообщений: 19
По умолчанию

неправильно, это не на Си
Sabolch вне форума Ответить с цитированием
Старый 24.11.2010, 18:34   #4
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

Цитата:
неправильно, это не на Си
А что это тогда? По моему Sam Gold все правильно написал. Функции ввода-вывода Сишные, выделение памяти тоже Сишное.
optimator вне форума Ответить с цитированием
Старый 24.11.2010, 19:28   #5
Sabolch
Пользователь
 
Аватар для Sabolch
 
Регистрация: 19.11.2010
Сообщений: 19
По умолчанию

я начал программу, надо докончить, а не написать заново по другому. и не надо вмешивать С++
Sabolch вне форума Ответить с цитированием
Старый 24.11.2010, 20:00   #6
juzam
Пользователь
 
Аватар для juzam
 
Регистрация: 25.11.2008
Сообщений: 31
По умолчанию

Если бы ты понимал хоть что-нибудь, то не писал бы пост выше. Все написано на Си.
juzam вне форума Ответить с цитированием
Старый 24.11.2010, 20:30   #7
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
я начал программу, надо докончить, а не написать заново по другому. и не надо вмешивать С++
Во-первых почитай про ввод-вывод в C и C++, а также про выделение памяти. Кроме того если надо в C, то зачем до этого был код на C++?
Во-вторых
Код:
for (i=1;i=>n; i++)
for (j=1; j=>m; j++)
Больше либо равно пишется так >=
Назначение этой конструкции неясно, т.к цикл не выполнится никогда.
Далее
Код:
}//========Получается, что ты заканчиваешь функцию main()
cout<<"a["<<i<<j<<"]=";
cin a[i][j]
}
Скобка открывается в другую сторону.
после cin пропущено >>
Код:
for (i=1, n-1; i++)
Тоже довольно странная конструкция, т.к нумерация элементов массива начинается с нуля.
Код:
int a[56][78]
зачем задавать массив именно таким образом? Лучше уж, если не хочешь связываться с выделением памяти, после ввода m и n написать
Код:
int a[n][m];
И еще ты много где не поставил ;. Поэтому было легче переписать прогу
Единственный способ стать умнее - играть с более умным противником.

Последний раз редактировалось Sam Gold; 24.11.2010 в 20:32.
Sam Gold вне форума Ответить с цитированием
Старый 24.11.2010, 21:00   #8
Sabolch
Пользователь
 
Аватар для Sabolch
 
Регистрация: 19.11.2010
Сообщений: 19
По умолчанию

элементы выше главной диагонали записывается не так ?

for (i=1; n-1; i++)
for (j=n+1; j<=n; j++)


P.S.-моя матрица начинается с 1 а не с 0. забыл указать это
Sabolch вне форума Ответить с цитированием
Старый 24.11.2010, 21:10   #9
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
элементы выше главной диагонали записывается не так ?

for (i=1; n-1; i++)
for (j=n+1; j<=n; j++)
Элементы выше главной диагонали - это когда номер столбца, в которой стоит элемент больше номера строки. Т.е будет
Код:
for(i=1;i<n-1;i++)
 for(j=i+1;j<m;j++)
Код:
for (j=n+1; j<=n; j++)[/
этот цикл никогда не выполнится, т.к сразу j>n.
Код:
for (i=1; i<n-1; i++)
Так последняя строка не будет рассмотрена. Так и должно быть в твоей проге?
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 24.11.2010, 21:18   #10
Sabolch
Пользователь
 
Аватар для Sabolch
 
Регистрация: 19.11.2010
Сообщений: 19
По умолчанию

задача: найти сумму положительных элементов в матрице А, находящихся выше главной диагонали
Sabolch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицой (Си) Roll1n Общие вопросы C/C++ 1 20.04.2010 21:28
Помогите с матрицой Dimati87 Помощь студентам 1 02.06.2009 17:56
проблема с матрицой onded Паскаль, Turbo Pascal, PascalABC.NET 5 28.01.2009 13:21
turbo C работа с матрицой ddos Помощь студентам 9 01.06.2008 22:37