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

Все отрицательные элементы заменить на квадраты элементов - C++

Восстановить пароль Регистрация
 
soliter
4 / 4 / 0
Регистрация: 06.06.2010
Сообщений: 9
18.06.2010, 22:26     Все отрицательные элементы заменить на квадраты элементов #1
Все отрицательные элементы заменить на квадраты этих элементов, а не отрицательные на половину суммы квадратов соседних элементов.
Помогите плиз, заранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2010, 22:26     Все отрицательные элементы заменить на квадраты элементов
Посмотрите здесь:

C++ Заменить все четные элементы массива на их квадраты, а нечетные удвоить
C++ Все четные элементы заменить на их квадраты, а нечетные удвоить (переделать с указателями)
C++ Заменить все четные элементы на их квадраты (не верно работает)
Все элементы массива, предшествующие минимальному, заменить на их квадраты C++
Отрицательные элементы массива заменить на их абсолютную величину и все нечётные элементы на корень C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 00:02     Все отрицательные элементы заменить на квадраты элементов #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
#include <iostream>
#include <time.h>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{   
    setlocale(LC_ALL,"rus");
    cout<<"Введите размер массива\n";
    int size=0;
    cin>>size;
    int *arr =new int[size];
    int *arrFin=new int[size];
    srand(time(NULL));
    for(int i=0; i<size; i++)
    {
        arr[i]=rand()%50-25;//произвольная генерация элементов
        arrFin[i]=arr[i];// копирование базового масива в целевой.
    }
    
    for (int i=0; i<size;i++)
    {
        if (arr[i]<0)//всем отрицательные на их квадрат.
            arrFin[i]*=arr[i];
        else if(size==1)break;//выход из цикла если 1 элемент в массиве
        else if (i==0)
            arrFin[0]=arr[1]*arr[1]/2;//для 1го элемента если он не отрицателен
        else if(i==size-1)
            arrFin[size-1]=arr[size-2]*arr[size-2]/2;//для последнего элемента если он не отрицателен
        else
            arrFin[i]=(arr[i-1]*arr[i-1]+arr[i+1]*arr[i+1])/2;// все остальные на  на половину суммы квадратов соседних элементов.
    }
    
    cout<<"\nИтоговый массив  базовый массив\n";
    for(int i=0; i<size; i++)
        cout<<setw(15)<<arrFin[i]<<setw(5)<<arr[i]<<endl;
    
    delete []arrFin;
    delete [] arr;
    system("pause");
    return 0;
}
както так.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,692
19.06.2010, 10:40     Все отрицательные элементы заменить на квадраты элементов #3
Я хочу спросить, зачем используется два массива?
ISergey
19.06.2010, 11:16
  #4

Не по теме:

neske, Чтобы жизнь медом не казалась..

neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,692
19.06.2010, 12:10     Все отрицательные элементы заменить на квадраты элементов #5
Все, я понял
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
19.06.2010, 12:28     Все отрицательные элементы заменить на квадраты элементов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от neske Посмотреть сообщение
Я хочу спросить, зачем используется два массива?
можно всё намного упростить:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<windows.h>
using namespace std;
 
int main()
{
        SetConsoleOutputCP(1251);
        int mass[10]={-1,5,9,-5,-3,7,6,-7,2,-6};
    for(int i=0; i<10; i++)         //отрицательные элементы заменить на квадраты этих элементов
    {
        if(mass[i]<0)
        {cout<<endl<<"Квадрат "<<i<<"го отрицательного элемента = "<<mass[i]*mass[i]<<endl;}
    }
    for(int i=0; i<10; i++)         //не отрицательные на половину суммы квадратов соседних элементов
    {
        if(mass[i]>0)
        {
            cout<<endl<<"Полусумма квадратов соседних элементов";
            cout<<" элемента "<<i<<" = "<<(mass[i-1]*mass[i-1])+(mass[i+1]*mass[i+1])/2<<endl;
        }
    }
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,692
19.06.2010, 12:30     Все отрицательные элементы заменить на квадраты элементов #7
Никакого упощения не вижу.
Своим решением, первоначальный массив вы не измените.
А еще у вас ошибка в 19 строке
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 12:31     Все отрицательные элементы заменить на квадраты элементов #8
угу и во втором форе если первый или последний элемент не отрицательный - выход за границу массива.
пс - не проще а упрощенней и мение универсальней.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,692
19.06.2010, 12:39     Все отрицательные элементы заменить на квадраты элементов #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я вот действиельно немного упрощу

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
#include <iostream>
#include <ctime>
#include <cmath>
 
int main ()
{
    // initial
    const int size=20;
    int MAS[size];
    int MAS_finish[size];
    // fill and output
    srand (time(NULL));
    std::cout << "Start matrix:\n";
    for (int i=0; i<size; i++) {
        MAS[i]=rand()%21-10;
        std::cout << MAS[i] << " ";
        MAS_finish[i]=MAS[i]; }
    std::cout << std::endl;
    // change
    for (int i=0; i<size; i++) {
        if (MAS[i]<0) MAS_finish[i]=(float)pow (MAS[i], 2);
        if ((MAS[i]>0) && (i!=0) && (i!=size-1))
                MAS_finish[i]=((float)pow (MAS[i-1], 2)+(float)pow (MAS[i+1], 2));
    }
    // output
    std::cout << "Finish matrix:\n";
    for (int i=0; i<size; i++)
        std::cout << MAS_finish[i] << " ";
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 12:48     Все отрицательные элементы заменить на квадраты элементов #10
а обработка первого и последнего элемента если они не отрицательные?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,692
19.06.2010, 14:12     Все отрицательные элементы заменить на квадраты элементов #11
В задаче четко сказано, что полусумма квадратов соседних элементов.
У первого и последнего элемента, двух соседей нет => ничего с ними не делаем.
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 14:23     Все отрицательные элементы заменить на квадраты элементов #12
да, так написано, но не сказано что соседних должно быть больше 1го. для 1го элемента будет 1 сосед всего, но он соседний элеменет,и его следует обработать, хотя эт только имхо. Правильный ответ знает только составитель задания)
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,692
19.06.2010, 15:24     Все отрицательные элементы заменить на квадраты элементов #13
Сумма предпогагает в себе как минимум два слагаемых
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2010, 15:28     Все отрицательные элементы заменить на квадраты элементов
Еще ссылки по теме:

C++ В массиве заменить все отрицательные элементы на минимальный элемент, а все положительные – на максимальный
C++ В одномерном массиве все отрицательные элементы заменить нулями и упорядочить элементы массива по убыванию
C++ В одномерном массиве все четные элементы заменить на их квадраты, а нечетные умножить на 2

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

Или воспользуйтесь поиском по форуму:
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 15:28     Все отрицательные элементы заменить на квадраты элементов #14
а для деления и достаточно 1го элемента.
(-1) го элемента не существует, значит он 0. (0+число)/2
Имхо постановка задания не однозначна.
Yandex
Объявления
19.06.2010, 15:28     Все отрицательные элементы заменить на квадраты элементов
Ответ Создать тему
Опции темы

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