Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.84
k1
1 / 1 / 0
Регистрация: 10.02.2011
Сообщений: 32
#1

массивы С++ - C++

14.02.2011, 14:37. Просмотров 5463. Ответов 14
Метки нет (Все метки)

Уважаемые програмисты помогите в решении задачи

1. Написать программу, определяющая сумму элементов массива, находящихся в массиве между первым и последним отрицательными элементами.Если таковых нет выдать соответствующее сообщение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2011, 14:37     массивы С++
Посмотрите здесь:

C++ Массивы
C++ Массивы
C++ Массивы
C++ массивы
C++ Массивы
Массивы C++ C++
массивы. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 92
14.02.2011, 15:23     массивы С++ #2
ну как то так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
int main ()
{
    int *array, count, firstNegative = -1, lastNegative = -1, sum = 0, i;
    setlocale(2, ".1251");
    srand((unsigned)time(NULL));
    printf("Введите количество элементов в массиве: ");
    scanf("%d", &count);
    array = malloc(count*sizeof(int));
    //Массив заполняется случайными числами
    for (i = 0; i < count; i++)
    {
        printf("%d ", (array[i] = -50+rand()%100));  //случайные числа от -50 до 50
        if (array[i] < 0)
            lastNegative = i;
    }
    for (i = 0; i < count; i++)
    {
        if (array[i] < 0)
        {
            firstNegative = i;
            break;
        }
    }
    if (lastNegative == firstNegative) //если есть только один отрицательный элемент
    {
        printf("\nНедостаточно отрицательных элементов!");
        return 1;
    }
    if (lastNegative - firstNegative == 1) //если первый и последний отрицательные элементы соседние
    {
        printf("\nНет элементов между первым и последним отрицательными!");
        return 2;
    }
    for (i = firstNegative+1; i < lastNegative; i++)
        sum += array[i];
    printf("\nСумма между первым и последним отрицательными: %d", sum);
    free(array);
    //getch();
    return 0;
}
Snoopy
1912 / 1069 / 90
Регистрация: 06.12.2008
Сообщений: 2,802
14.02.2011, 15:28     массивы С++ #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream.h>
using namespace std;
int main()
{
    int n, i, a[n];
    cout << "n= ";
    cin >> n;
    srand(time(0));
    for (i=0; i<n; i++)
        {
              a[i]=rand()%10-2;
              cout << a[i] << "  ";
        }
    cout << "\n";
    int n1, n2;
    bool l=true;
    for (i=0; i<n; i++)
        if (a[i]<0)
           {
                   n1=i;
                   break;
           }
        else
            l=false;
    bool t=true;
    if (l==true)
       cout << "\nError!";
    else
        {
         for (i=n1+1; i<n; i++)
                if (a[i]<0)
                 {  
                            n2=i;
                            break;
                 }
                else
                    t=false;
        }
    if (n2-n1==1)
       cout << "\nError!!!";
    else
        {
            if (t==false)
               cout << "\nError!!!";
            else
                {
                 int s=0;
                 for (i=n1+1; i<n2; i++)
                     s+=a[i];
                 cout << "\nS= " << s;   
                 }
        }
    cout << "\n";
    system("\npause");
    return 0;
}
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 481
14.02.2011, 15:28     массивы С++ #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int sum=0,index_pol=-1,index_otr=-1,i,n;
n;//кол во эл ов массива
for(i=0;i<n;i++)
if(mas[i]<0) index_otr=i;//нашли индекс последнего отрицательного
 
 
for(i=n;i>0;i--)
if(mas[i]>=0) index_pol=i;//нашли индекс первого положительного
 
 
if(index_pol<index_otr && (index_otr !=-1 || index_pol!=-1))
for(i=index_pol+1;i<index_otr;i++)
sum+=mas[i];//счиатем сумму
 
else printf("Ошибка");
Писал без компилятора могут быть ошибки, но идея надеюсь понятна.
k1
1 / 1 / 0
Регистрация: 10.02.2011
Сообщений: 32
14.02.2011, 16:21  [ТС]     массивы С++ #5
Пишет 3 одинаковые ошибки в коде From_Tula

'mas' : undeclared identifier

что нужно подправить?

в коде Snoopy пишет что неправельная 1 строка тоесть библиотека
PsiYar
122 / 118 / 22
Регистрация: 10.02.2011
Сообщений: 199
14.02.2011, 16:34     массивы С++ #6
просто mas забыли описать
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 481
14.02.2011, 16:35     массивы С++ #7
k1, я говорил писал без компилятора, щас 10 мин, пришлю рабочий код.
Еще в какой оболчке ты пишешь?
k1
1 / 1 / 0
Регистрация: 10.02.2011
Сообщений: 32
14.02.2011, 16:44  [ТС]     массивы С++ #8
С++
#include <iostream>
using namespace std;
int main()
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
14.02.2011, 16:44     массивы С++ #9
Цитата Сообщение от From_Tula Посмотреть сообщение
Еще в какой оболчке ты пишешь?
Что значит "оболочка"?
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 481
14.02.2011, 16:47     массивы С++ #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
void main()
{
int mas[20],sum=0,index_pol=-1,index_otr=-1,i,n,j=0;
printf("Введите кол - во эл-ов массива: ");
scanf("%d",&n);
printf("Введите эл-ты массива: ");
while(j<n)
{
scanf("%d",&mas[j]);
j++;
}
 
for(i=0;i<n;i++)
if(mas[i]<0) index_otr=i;//нашли индекс последнего отрицательного
 
 
for(i=n;i>0;i--)
if(mas[i]>=0) index_pol=i;//нашли индекс первого положительного
 
 
if(index_pol<index_otr && (index_otr !=-1 || index_pol!=-1))   
{
for(i=index_pol;i<index_otr;i++)
sum+=mas[i];//счиатем сумму
 printf("Сумма = %d",sum);
} 
else printf("Ошибка"); 
 
}
Добавлено через 2 минуты
Nameless One, не првильно выразился) каким компилятором пользуешься(а может и снова не так)
Ну он понял и походу это VS
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.02.2011, 16:49     массивы С++ #11
Цитата Сообщение от From_Tula Посмотреть сообщение
и походу это VS
откуда такие выводы?
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
14.02.2011, 16:49     массивы С++ #12
Цитата Сообщение от From_Tula Посмотреть сообщение
Nameless One, не првильно выразился) каким компилятором пользуешься(а может и снова не так)
Ну он понял и походу это VS
уже лучше VS - это IDE, а использует она компилятор cl.exe
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 481
14.02.2011, 16:57     массивы С++ #13
fasked, а может и нет, может вообще DEV C++, в VS вроде еще #include "stdafx.h" нужно.
А может я вообще ошибаюсь
k1
1 / 1 / 0
Регистрация: 10.02.2011
Сообщений: 32
14.02.2011, 17:02  [ТС]     массивы С++ #14
в программе вместо
("Введите кол - во эл-ов массива: ")
высвечиваютса какието непонятные буквы, в чем причина
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2011, 17:05     массивы С++
Еще ссылки по теме:

C++ Массивы
C++ Массивы в С
C++ Массивы
C++ Массивы
C++ Массивы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
14.02.2011, 17:05     массивы С++ #15
Эту тему читал?
Yandex
Объявления
14.02.2011, 17:05     массивы С++
Ответ Создать тему
Опции темы

Текущее время: 10:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru