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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 01:03   #1
LovingDaisy
 
Регистрация: 11.01.2010
Сообщений: 9
Вопрос одномерные массивы в c++

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

1) номер минимального по модулю элемента массива;
2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.

сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. освободившиеся в конце массива элементы заполнить нулями.

спасибо!
LovingDaisy вне форума Ответить с цитированием
Старый 11.01.2010, 01:15   #2
LovingDaisy
 
Регистрация: 11.01.2010
Сообщений: 9
Плохо

вот начало:

Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        srand( (unsigned)time( NULL ) );
        const int n=10;
        double a[n];
        int i,j,imin=0;
        for (i=0; i<n; i++)
        {
                a[i]=rand()%20-10;
                cout << a[i] << " " ;
                if (abs(a[i])<abs(a[imin]))
                        imin=i;
 
        }
        a[i]=abs(a[i]);
        cout << a[i]<< endl;
        cout << "nomer minimal'nogo po modylu elementa = " << n << endl;
    return 0;
}
но тут найден минимальный по модулю элемент, а его номер не выводится, выводится общее число елементов
LovingDaisy вне форума Ответить с цитированием
Старый 11.01.2010, 02:31   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от LovingDaisy
но тут найден минимальный по модулю элемент, а его номер не выводится, выводится общее число елементов
Что в программе указано, то и выводится.
Код:
 cout << "nomer minimal'nogo po modylu elementa = " << n << endl;
ничего не замечаете?

ок. Исправил.
Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        srand( (unsigned)time( NULL ) );
        const int n=10;
        double a[n];
        int i,j,imin=0;
        for (i=0; i<n; i++)
        {
                a[i]=rand()%20-10;
                cout << a[i] << " " ;
                if (fabs(a[i])<fabs(a[imin]))
                        imin=i;
 
        }
        a[imin]=fabs(a[imin]);
        cout << a[imin]<< endl;
        cout << "nomer minimal'nogo po modylu elementa = " << imin << endl;
        cin.get();
    return 0;
}
Предоставляйте наработки по остальным заданиям. Свои наработки, а не найденные где-то в интернете.

Цитата:
2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Обнуляете переменную под сумму (например, S). Заводите дополнительную переменную-флаг, которая говорит о том, встретился ли отрицательный элемент. Зануляете ее.
Далее в цикле проходите по элементам массива.
Если флаг == 1, то S += fabs(a[i]);
Если встретился отрицательный, то флаг = 1.

Цитата:
сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. освободившиеся в конце массива элементы заполнить нулями.
Тут и сказать по большому счету нечего. Встретили элемент из [a,b] - сдвигаем массив влево начиная с этой позиции.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.01.2010, 19:26   #4
LovingDaisy
 
Регистрация: 11.01.2010
Сообщений: 9
Радость

спасибо огромное
LovingDaisy вне форума Ответить с цитированием
Старый 25.03.2010, 23:14   #5
Olka...
Пользователь
 
Аватар для Olka...
 
Регистрация: 25.03.2010
Сообщений: 11
По умолчанию

Народ, не подскажете как отсортировать массив????
задание было следующее ...
В одномерном массиве, состоящем из вещественных элементов, вычислить:
1) количество элементов массива, меньших ;
2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом — все остальные.


вот код
я написала все только вот никак не могу вывести его почеловечески))
помогите плиз...


# include <iostream>
# include <math.h>
# include <conio.h>
using namespace std;

int main()
{
const int n=10;
double a[n]={ 2.2, 5.1, -8.2, 7.4, 1.3, -3.2, 4.3, 8.4, 3.2, 6.1};
int i,c;

for (i=0;i<n;i++)
cout<<a[i]<<" "<<endl;
cout<<"vvedite c = ";
cin>>c;

double k=0;
for (i=0;i<n;i++)
if (a[i]<c) k=k++;
cout<<"kollichestvo = "<<k<<endl;

int iotr=0;
for (i = 0; i < n; i++)
if(a[i] < 0) iotr = i;
cout <<"otr = " << a[iotr]<<endl;

double sum=0;
for (i=iotr+1;i<n;i++)
sum+=(int)a[i];
cout<<"symma = "<<sum<<endl;

int imax=0,left = 0,right=9;
double proc=0;

for (i = 1; i < n; i++)
if(a[i] > a[imax])
imax = i;
cout << "max = " <<a[imax] << endl;

proc = a[imax]*0.2;
double boundle=a[imax]-proc;
cout << "20 % = " <<proc << endl;
cout << "max-20 % = " <<boundle<< endl;

while(a[left]<proc)
{
if(a[left]<boundle) left++;
else
if (a[right]>=boundle) right--;
{
double t=a[left];
a[left]=a[right];
a[right]=t;
}
/* left++;
right--;*/
}
for (i = 0; i < n; i++)
cout <<a[n]<<" ";
cout <<endl;
return 0;
}
Olka... вне форума Ответить с цитированием
Ответ


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