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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2008, 18:20   #1
Холмс
 
Регистрация: 05.11.2008
Сообщений: 4
По умолчанию Помогите решить задачу в С++

Помогите решить такую задачку... Имеется массив чисел. Нужно расчитать сумму положительных чисел, расположенных между 1 и 2 отрецательным. Вот что получилось у меня

#include <stdio.h>
#include <conio.h>
#include <math.h>

void main()
{
float a[5];
float min; //min element in array
int i,j; //index
//int k;
float sum;
int ineg;
int M;
float AA;
int k,p;
bool flag;

//printf("\n searching for the minimum element in array \n");

printf("\n fill array\n");
for(i=0;i<5;i++)
scanf("%f",&a[i]);

k=0;
p=0;
sum=0;
flag=false;

for (i=0;i<5;i++) {
if (a[i]<0)
{ if (flag=false) {
k=i; flag=true;}
else p=i;}
else printf("Negative numbers are absent");
} //for i

for (j=k+1;j<p;j++)
sum=sum+a[j];

printf("\n %f is amount of positive numbers \n ",sum);



printf("\n For exit press <Enter>");
getch(); //reads symbol from the keyboards
}

Некоторые массивы, к примеру "-3,5,2,-1,1", считает правильно (в данном выдает 7), другие же (например 8 -1 2 -1 2) неправильно... Пожалуйста, помогите с решением, очень нужно
Холмс вне форума Ответить с цитированием
Старый 09.11.2008, 19:12   #2
spark-roman
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 20
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
float a[5];
float min; //min element in array
int i,j; //index
//int k;
float sum;
int ineg;
int M;
float AA;
int k,p;
bool flag;

//printf("\n searching for the minimum element in array \n");

printf("\n fill array\n");
for(i=0;i<5;i++)
scanf("%f",&a[i]);

k=0;
p=0;
sum=0;
flag=false;

for (i=0;i<5;i++){
    if (a[i]<0){ 
       if (!flag && a[i+1]>0){
          k=i; 
          flag=true;
       }else{
             if (flag && a[i-1]>0){ 
                p=i;
                break;
             }     
       }
    }
} //for i
if (!flag) printf("Negative numbers are absent");
else{
     for (j=k+1;j<p;j++) sum=sum+a[j];
     printf("\n %f is amount of positive numbers \n ",sum);
}
printf("\n For exit press <Enter>");
getch(); //reads symbol from the keyboards
return 0;
}

Последний раз редактировалось spark-roman; 10.11.2008 в 00:55.
spark-roman вне форума Ответить с цитированием
Старый 09.11.2008, 20:41   #3
Холмс
 
Регистрация: 05.11.2008
Сообщений: 4
По умолчанию

Код конечно помог решить проблему с указанным массивом, но всеравно с некоторыми данными выдает неправильный ответ, к примеру в "-1,5,-5,-4,-3" выдает -4, хотя должен 5 и тд((((((
Холмс вне форума Ответить с цитированием
Старый 09.11.2008, 21:06   #4
spark-roman
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 20
По умолчанию

Значит, когда находится второй элемент досрочно выходим из цикла. Там в коде поправлено
spark-roman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу! Anuta Помощь студентам 2 26.06.2008 05:10
Помогите решить задачу... Spiker01 Паскаль, Turbo Pascal, PascalABC.NET 27 17.06.2008 18:58
Помогите решить задачу Chuvak Общие вопросы C/C++ 3 07.06.2008 09:48
Помогите решить задачу! Алисик Помощь студентам 1 24.12.2007 01:21
Помогите решить задачу cL1zMa Паскаль, Turbo Pascal, PascalABC.NET 5 15.12.2006 11:04