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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 01:27   #1
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
Сообщение Массив (С++). вычислить сумму и количество отрицательных елементов которые находятся под главной диагональю матрицы

Нужно вычислить суму и колличество отрицательных елементов которые находятся под главной диагональю матрицы.
Матрица - 7х7.

Вот мои наработки:
Код:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int main(){
srand((unsigned)time(NULL));
float i,j,k,s;
double *p;
p=new double[49];
for(i=0;i<7;i++)
	{cout<<endl;
	for(j=0;j<7;j++)
		{*(p+i*7+j)=rand()%(1000)/100-5;
		printf("%7.2f",*(p+i*7+j));
}}
cout<<endl<<endl;
k=0;
for(i=0;i<7;i++){
	for(j=0;i<7;i++){
		if (i>j) 
		*(p+i*7+j)<0 k++;
		s=s+(*(p+i*7+j));
		

delete[]p;
return 0;
}
Еще написал ее на паскале - может пригодится...:
Код:
type mas=array[1..7,1..7] of real;
var matr:^mas;
i,j,k:byte;
s:real;
begin
writeln('  Масив:');
s:=0;
k:=0;
randomize;
new(matr);
for i:=1 to 7 do
begin
for j:=1 to 7 do
begin
matr^[i,j]:=random-20+random(50);
write(matr^[i,j]:8:2)
end;
writeln
end;
k:=0;
for i:=1 to 7 do
begin
for j:=1 to 7 do begin
if i>j then
if matr^[i,j]<0 then  begin
k:=k+1;
s:=s+matr^[i,j]
end
end
end;
writeln();
writeln('сума від`ємних ел-ів ',s:6:2);
writeln('кі-ть від`ємних ел-ів ', k:2)
end.
Заранее спасибо!
spinogryz_ua вне форума Ответить с цитированием
Старый 29.11.2012, 19:01   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
double *p;
p=new double[49];
for(i=0;i<7;i++)
	{cout<<endl;
	for(j=0;j<7;j++)
		{*(p+i*7+j)=rand()%(1000)/100-5;
		printf("%7.2f",*(p+i*7+j));
}}
Вам матрица задана конкрекно 7х7? Зачем создавать непонятно что?

Код:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int main(){
srand((unsigned)time(NULL));
int i,j,k=0;
float s=0;
float p[7][7];
for(i=0;i<7;i++)
    {
      cout<<endl;
	for(j=0;j<7;j++)
	{
                         p[i][j]=rand()%(1000)/100-5;
		printf("%7.2f",p[i][j]);
              }
     }
cout<<endl<<endl;

for(i=0;i<7;i++)
         {
	for(j=0;i<7;i++)
                 {
	       if ((i>j ) & (p[i][j]<0)) 
		{
                          k++;
		s=s+p[i][j];
		}
                   }
          }
printf("s=%7.2f",s);
printf("k=%d",k);

return 0;
}
там еще перед выходом необходимо поставить функцию ожидания нажатия клавиши или системную паузу.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 29.11.2012, 20:46   #3
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию

Дело в том что по заданию нужно использовать динамическую переменную...

В этом вся загвоздка.
spinogryz_ua вне форума Ответить с цитированием
Старый 30.11.2012, 11:17   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int main(){
srand((unsigned)time(NULL));
int i,j,k=0,n=7;
float s=0;
float **p= new float *[n];
for(i=0;i<n;i++)
    {
      cout<<endl;
      p[i]=new float[i];
	for(j=0;j<n;j++)
	{
                         p[i][j]=rand()%(1000)/100-5;
		printf("%7.2f",p[i][j]);
              }
     }
cout<<endl<<endl;

for(i=0;i<7;i++)
         {
	for(j=0;i<7;i++)
                 {
	       if ((i>j ) & (p[i][j]<0)) 
		{
                          k++;
		s=s+p[i][j];
		}
                   }
          }
printf("s=%7.2f",s);
printf("k=%d",k);
delete[];
return 0;
}
где-то так. Не проверяла.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 30.11.2012, 11:29   #5
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию

А, ну в принципе 1-й код это то что нужно.
Просто p[i][j] заменил на *(p+i*7+j).

Спасибо вам огромное!
spinogryz_ua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить произведение элементов массива, расположенных под главной диагональю вася2342 Помощь студентам 1 06.06.2012 09:40
Как найти сумму элементов матрицы, которые находятся выше главной диагонали????? ВДПУ Помощь студентам 3 27.05.2012 11:55
Дана квадратная матрица А порядка n. Найдите сумму положительных элементов матрицы, стоящих под главной диагональю (Паскаль) Вовик-вовик Помощь студентам 1 10.01.2012 21:48
замена всех отрицательных елементов, находившихся под главной диагонолью матрицы VaLiAr Помощь студентам 2 03.11.2011 17:57
Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16] Mirel Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 10:58