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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.05.2010, 00:23   #1
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию скажите,что тут не так

В одномерном массиве, состоящим из n вещественных элементов, вычислить: сумму элементов массива, расположенных до последнего положительного элемента.

я вроде как полностью написала код на С++, но у меня видимо неправильный алгоритм, а в чем я не могу понять, скажите пожалуйста в чем моя ошибка?
Код HTML:
#include <iostream>
using namespace std;
int main () {
	int n, pol;
	float s;
	cout<<"Vvedite n: "<<endl;
	cin>>n;
	int *a=new int[n];
	for(int i=0; i<n; i++)
		cin>>a[i];
	pol=a[0];
	i=1;
	while(i<=n) {
				if(a[i]>0) {
			pol=i;
			i=1; 
		}
			else 
				cout<<"Pologitelnih elementov net"<<endl;
			i--;
			}
		s=0;
		for(i=1; i<=pol; i++)
			s=s+a[i];
		cout<<"s= "<<s<<endl;
		return 0;
}
<<Katushka>> вне форума
Старый 10.05.2010, 01:12   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Код:
#include <iostream>

int main () {
	int n;

	cout<<"Enter dimension of array: "<<endl;
	
	cin >> n;
	float *a=new float[n];
	int i;
	
	for( i=0; i<n; i++){
	   cout<<"enter "<<i+1<<" item of array"<<endl;
		cin>>a[i];
		}
		

	int j=-1;
	
	for(i=n-1;i>=0;i--) {   //======просматриваем массив с конца
		if(a[i]>0) {
			j=i;       //=========запоминаем номер последнего положительного элемента
		   break;	
		}
		
	}

float s=0;

	if(j!=-1){
		
		for(i=0; i<j; i++) //если вычислять сумму до последнего положительного элемента включая, то for(i=0; i<j+1; i++)
			s=s+a[i];
	}
	else{
		cout<<"No positive elements"<<endl;
	}
			
		cout <<"Total scope is:" << s << endl;
		return 0;
}
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума
Старый 10.05.2010, 21:28   #3
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию

спасибо за помощь!!
<<Katushka>> вне форума
Старый 11.05.2010, 02:23   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Sam Gold, а вот такой вопрос: а не проще ли в одном цикле сразу всё посчитать? И массив здесь зачем-то...
Carbon вне форума
Старый 14.05.2010, 21:50   #5
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию опять же наверно туплю(

Дана целочисленная квадратная матрица. Найти минимальную сумму среди сумм элементов главной и побочной диагоналей матрицы

вот мой код, но у меня что-то выдает какую-то фигню((

PHP код:
#include<stdio.h>
#include<math.h>
int main() {
    
int i,j,n,r,s1,s2,mins,a[20][20];
    
printf("\nn? "); 
    
scanf("%d",&n);
    for(
i=0;i<n;i++)
        for(
j=0;j<n;j++){
            
printf("a[%d][%d]? ",i+1,j+1);
            
scanf("%d",&r);
            
a[i][j]=r;
        }
        
s1=0;
        for(
i=1;i<n;i++)
            for(
j=1;j<n;j++) {
                if(
i==j
                    
s1=s1+r;
                }
            
printf("\ns1=%8d\n",s1);

            
s2=0;
            for(
i=1;i<n;i++)
                for(
j=1;j<n;j++) {
                    if((
i+j)==(n+1)) {
                        
s2=s2+r;
                    }
                    
printf("\ns2=%8d\n",s2);
                }
                if(
s1<s2
                    
s1=mins;
                    else 
                        
s2=mins;
                    
                
                
printf("\nmins=%8d\n",mins); 
                
getchar();
                
getchar();


Последний раз редактировалось <<Katushka>>; 14.05.2010 в 21:51. Причина: не туда
<<Katushka>> вне форума
Старый 14.05.2010, 22:27   #6
Aronax
Пользователь
 
Регистрация: 03.07.2009
Сообщений: 45
По умолчанию

в 1м цикле s1=s1+a[i][j] также во втором
Aronax вне форума
Старый 14.05.2010, 22:36   #7
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию

а я же заменила a[i][j] на r
<<Katushka>> вне форума
Старый 14.05.2010, 22:37   #8
Aronax
Пользователь
 
Регистрация: 03.07.2009
Сообщений: 45
По умолчанию

где? надо r заменить на a[i][j]
Aronax вне форума
Старый 14.05.2010, 22:41   #9
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию

в самом начале шла замена, после нахождения массива
a[i][j]=r;
<<Katushka>> вне форума
Старый 14.05.2010, 22:41   #10
<<Katushka>>
Пользователь
 
Регистрация: 10.05.2010
Сообщений: 12
По умолчанию

разницы нет что писать r или a[i][j]
<<Katushka>> вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так, скажите п-та! mirawoo Общие вопросы C/C++ 2 24.09.2009 12:54
ребята скажите ка корень вводится так ^? MeGaTpoH Общие вопросы C/C++ 6 16.12.2008 18:55
Матрицы. Скажите что не так!! Ольчик Общие вопросы Delphi 2 14.11.2008 12:08
Подскажите что тут не так!? dcl Общие вопросы Delphi 5 28.03.2007 08:15
Скажите как сделать так, чтобы размер формы оставался фиксированным? Faramund Помощь студентам 2 20.03.2007 20:14