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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2012, 18:28   #1
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
Восклицание Одномерный массив в C

В С в одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:
Произведение элементов массива, расположенных между первым и последним отрицательными элементами
Помогите пожалуйста
the_faceless вне форума Ответить с цитированием
Старый 02.12.2012, 18:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Показывай как вводишь массив )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2012, 19:20   #3
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Вот пример
В статическом массиве А размером N (не более 20), состоящем из целых чисел найти количество четных чисел и их сумму. Размер массива и его элементы вводятся с клавиатуры.
Текст программы с использованием ввода-вывода в потоках может иметь следующий вид:
Код:
#include <iostream.h>
#include <conio.h>
void main()
{
       int a[20], n, i, kol = 0, s = 0;
       cout << "\t Input N (<=20) ";
       cin >> n;
       cout <<"\n\t Massiv A" << endl;
       for(i = 0; i < n; i++) {
                cout << "\t a[ " << i+1 << " ] = ";
                cin >> a[i];
        }
        for(i=0; i<n;i++)
                if(a[i] % 2 == 0){
                        kol++;
                        s += a[i];
                }
        cout << "\n Kol-vo = " << kol << "\t Summa = " << s << endl;
        cout << "\n Press any key ... " << endl;
        getch();
}
Результат выполнения программы может иметь следующий вид:
the_faceless вне форума Ответить с цитированием
Старый 05.12.2012, 09:31   #4
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

ребзя, помогите пожалуйста)
the_faceless вне форума Ответить с цитированием
Старый 05.12.2012, 09:46   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Помогаю:

Код:
i=0;
while a[i]>=0 do i++;
i_beg=i;
i=n-1;
while a[i]>=0 do i--;
i_end=i;
pr=1;
for (i=i_beg+1;i<i_end;i++) pr*=a[i];
Ну а ввод-вывод уж сами, тем более что пример есть
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.12.2012, 19:22   #6
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

к сожалению я полный нуб, когда я делаю так
Код:
#include <iostream> 
#include <math>     
using namespace std;
void main()
{
int a[20], n, i;
  i=0;
while a[i]>=0 do i++;
i_beg=i;
i=n-1;
while a[i]>=0 do i--;
i_end=i;
pr=1;
for (i=i_beg+1;i<i_end;i++) pr*=a[i];
        return ;
}
у меня считает непонятно что, но явно не произведение элементов массива, расположенных между первым и последним отрицательными элементами. вот например:
the_faceless вне форума Ответить с цитированием
Старый 08.12.2012, 19:35   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Эта программа не может выдавать такой результат... О_о
Цитата:
произведение элементов массива, расположенных между первым и последним
Код:
int j,i=0;sum=0;
for(;i<20 a[i]>0;i++); i++
for(j=19;j<=i a[j]>0;j--);
for(;i<=j;i++) sum+=a[i];
Такое подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2012, 19:44   #8
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Sciv
Код:
i=0;
while a[i]>=0 do i++;
i_beg=i;
i=n-1;
while a[i]>=0 do i--;
i_end=i;
pr=1;
for (i=i_beg+1;i<i_end;i++) pr*=a[i];
А если в массиве нет отриц. элементов ?

Мой вариант:
Код:
 for (i=0;i<n;i++)
 {
 if (a[i]<0)
 {i_start=i;
	 if (k==1)
	 {
	 i_end=i;
	 k++;
	 break;
	}
 k++;
 }

 }
 if (k!=2)
	 cout<<"В массиве нет 2ух отриц эл.";
	 else
	 { int pr=1;
	 for (i = i_start+1; i < i_end; i++)
		 pr*=a[i];
		 cout<<pr;
	 }

Последний раз редактировалось Базиля; 08.12.2012 в 19:52.
Базиля вне форума Ответить с цитированием
Старый 08.12.2012, 19:57   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
А если в массиве нет отриц. элементов ?
Во-первых, я изначально неполное решение дал, во-вторых, признаюсь, я об этом не задумывался
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.12.2012, 20:07   #10
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Используя код
Код:
#include <iostream.h>
#include <conio.h>
void main()
{
       int a[20], n, i, kol = 0, s = 0;
       cout << "\t Input N (<=20) ";
       cin >> n;
       cout <<"\n\t Massiv A" << endl;
       for (i=0;i<n;i++)
 {
 if (a[i]<0)
 {i_start=i;
	 if (k==1)
	 {
	 i_end=i;
	 k++;
	 break;
	}
 k++;
 }

 }
 if (k!=2)
	 cout<<"В массиве нет 2ух отриц эл.";
	 else
	 { int pr=1;
	 for (i = i_start+1; i < i_end; i++)
		 pr*=a[i];
		 cout<<pr;
	 }
        cout << "\n Kol-vo = " << kol << "\t Summa = " << s << endl;
        cout << "\n Press any key ... " << endl;
        getch();
}
Получаю тоже самое

the_faceless вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
одномерный массив curly182 Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 15:01