Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > одномерные массивы


Автор: keks123 22.10.2009, 16:08
Доброго времениsmile
В одномерном массиве, состоящем из  различных вещественных элементов, вычислить сумму элементов массива, расположенных между первым и последним ненулевыми элементами.


Ну не доходит как эту сумму искать, помогите пожалуйста))


Код
//---------------------------------------------------------------------------

#pragma hdrstop
#include <vcl.h>
#include <iostream.h>
#include <conio.h>

//---------------------------------------------------------------------------

#pragma argsused

int sum (int*, int);
char* Rus(unsigned char* st)
{
    unsigned char *p = st;
    while (*p)
    {
        if ( (*p >= 192) && (*p <= 239))
            *p -= 64;

        if ( ( *p >= 240) && (*p <= 255))
            *p -= 16;

        p++;
    }
    return st;
}
int main(int argc, char* argv[])
{
        int n=5, i;
        int *a = new int [n];
        for (i = 0; i < n; i++)
        {
                cout<<Rus("Введите ")<<i<<Rus("-й элемент : ");
                cin>>a[i];
        }
      
        cout<<Rus("\nСумма элементов массива : ")<<sum(a,n);
        getch ();
        return 0;
}
  
}
int sum (int*a, int n) //!!!!
 {
   int S = 0;
   for (int i = 0; i < n; i ++)

   return S;
   }

//--------------------------------------------------------------



вот сам код, не могу, дальше ступор)))


Модератор: Не забываем пользоваться кнопочкой "Код"

Автор: Anikmar 22.10.2009, 16:16
Как-то так: (не проверял)

Код

int sum (int*a, int n)
 {
   int S = 0;
   int i=0;

   while((a[i] == 0)&&(i<n)) ++i;
   while((a[i] != 0)&&(i<n)) S+=a[i++];

   return S;
   }



Это включая первый и последний элемент

Автор: keks123 22.10.2009, 16:26
smile) спасибо))

Автор: Anikmar 22.10.2009, 16:31
Цитата(keks123 @  22.10.2009,  16:26 Найти цитируемый пост)
) спасибо)) 

Кстати, если вам именно между самыми крайними и не включая первый и последний ненулевой, то код будет примерно такой:
Код

int sum (int*a, int n)
 {
   int S = 0;
   int i=0;
   int j;

    j = n-1;
// Ищем первый ненулевой
   while((a[i] == 0)&&(i<n)) ++i;
// Ищем последний
   while((a[j] == 0)&&(j>0)) --j;
// Считаем сумму
   ++i;
   while(i<j) S+=a[i++];

   return S;
   }


Автор: keks123 22.10.2009, 16:39
Да я в принципе понял))
думаю правильно будет)

Автор: mrbrooks 23.10.2009, 08:57
Цитата(keks123 @  22.10.2009,  16:08 Найти цитируемый пост)
В одномерном массиве, состоящем из  различных вещественных элементов, вычислить сумму элементов массива, расположенных между первым и последним ненулевыми элементами.

Либо с утра подтормаживаю, но в чем пафос вопроса? Один фиг, что  с нулями, что без - результат то будет один и тот же. Или вся соль именно в определении элементов?

Автор: keks123 23.10.2009, 09:17
пример: 
а [0] = 0
a [1] = 0
a [2] = 1
a [3] = 1
a [4] = 1
a [5] = 1

a [6] = 0
a [7] = 0
a [8] = 1
a [9] = 1

Сумма будет равна : 4

Автор: azesmcar 23.10.2009, 09:22
keks123

Последний НЕНУЛЕВОЙ это a [9] и сумма будет равна сумме всего массива, а первый НЕНУЛЕВОЙ тебе что дает? Что с нулями что без, сумма от этого не меняется. Ты сам хоть задачу понимаешь? 

Автор: keks123 23.10.2009, 17:18
вот как правильноsmile

а [0] = 0
а [1] = 0
а [2] = 1
а [3] = 1
а [4] = 1
а [5] = 1
а [6] = 1
а [7] = 1

а [8] = 1
а [9] = 0

вот найти сумму этихsmile
не нулевых)

Автор: bsa 26.10.2009, 13:06

M
bsa
keks123, продолжаем игнорировать совет почитать про оформление кода?



#pragma hdrstop надо писать после #include <vcl.h>, но до других инклюдов (vcl.h нужно подключать первым) - быстрее компилироваться будет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)