Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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


Ответ
 
Опции темы
Старый 04.02.2011, 22:33   #1
tem_80
Пользователь
 
Регистрация: 25.01.2011
Сообщений: 15
По умолчанию двухмерный массив

есть такое задание:Посчитать сумму элементов, которые находятся между первым и последним отрицательным элементами.
Я вроде написал чтобы всю сумму найти, но никак не могу врубиться где номера индексов в которых находятся отрицательные элементы определять.
Код:
#include <stdio.h>
void main()
{
	
	const int n=5,m=4;
	float x[n][m],sum;
	int i,j,fOi,fOj,lOi,lOj;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			printf("[%d][%d]=",i,j);
			scanf("%f",&x[i][j]);
		}
		printf("\n");
	}
	sum=0;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			printf("[%d][%d]=%.2f\t",i,j,x[i][j]);
			sum+=x[i][j];
			
		}
		printf("\n");
	}
	printf("%.2f",sum);

}
fOi-это адрес строки первого отриц.элемента
fOj-это адрес столбца первого отриц.элемента
lOi-это адрес строки последнего отриц.элемента
lOj-это адрес столбца последнего отриц.элемента

Последний раз редактировалось ACE Valery; 05.02.2011 в 15:19.
tem_80 вне форума Ответить с цитированием
Старый 04.02.2011, 23:18   #2
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

Код:
fOi=-1;                                                                //Долго рассказывать почему fOi=-1, надо сами поймете 
for (int i=0; i<n; i++)                                           //Тут с циклами все понятно
    for (int j=0;j<m; j++){
       if ((X[i][j]<0)&&(fOi<0)) {fOi=i; fOj=j;}          //Проверяется условие на отрицательность x[i][j], и был ли записан индекс 1-го отр. раньше
       if (X[i][j]<0) {IOi=i;IOj=j;}                             //Каждый встречающийся отрицательный элемент записывается как последний
    }
Очень сильно прошу прощения за такой код, но голова уже не в состоянии придумать что то оригинальное....устал я.

Последний раз редактировалось Tema_Crazzzy; 05.02.2011 в 14:19. Причина: Правка кода
Tema_Crazzzy вне форума Ответить с цитированием
Старый 04.02.2011, 23:53   #3
tem_80
Пользователь
 
Регистрация: 25.01.2011
Сообщений: 15
По умолчанию

огромное спасибо,хотя подождите,первое условие ведь ниразу не выполнится.

написал так:
int a=0
потом в цикле
if ((X[i][j]<0)&&(a>=0)) {fOi=i; fOj=j;a-=1}
и всё пошло.

а как можно написать условие чтобы в двухмерном массиве между определенными индексами(стр1,ст2 и стр3,ст1) производить какие либо действия?Границы известны.
fOi=1
fOj=2
lOi=3
lOj=1

Последний раз редактировалось Stilet; 05.02.2011 в 15:41.
tem_80 вне форума Ответить с цитированием
Старый 05.02.2011, 14:15   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
int a[100];
//заполнение массива
int indexFirst;
for (indexFirst=0;indexFirst<100;indexFirst++)
    if (a[indexFirst]<0)
        break;

int indexLast;
for (indexLast=99;indexLast>=indexFirst;indexLast--)
    if (a[indexLast]<0)
        break;

int summ;
for (int i=indexFirst;i<=indexLast;i++)
    summ+=a[i];

cout<<"Сумма между первым и последним отрицательными элементами = "<<summ;
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 05.02.2011, 14:22   #5
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

Цитата:
Сообщение от tem_80 Посмотреть сообщение
огромное спасибо,хотя подождите,первое условие ведь ниразу не выполнится.
Извиняюсь. Исправил.
Tema_Crazzzy вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухмерный массив. 666Pupsik666 Общие вопросы C/C++ 4 16.01.2011 13:27
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Двухмерный массив briko Паскаль, Turbo Pascal, PascalABC.NET 6 01.06.2010 09:45
Двухмерный массив Lev.F Помощь студентам 1 30.05.2010 21:31
двухмерный массив varyat Помощь студентам 0 23.05.2010 17:44