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

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

Войти
Регистрация
Восстановить пароль
 
soliter
4 / 4 / 0
Регистрация: 06.06.2010
Сообщений: 9
#1

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

18.06.2010, 22:26. Просмотров 625. Ответов 13
Метки нет (Все метки)

Все отрицательные элементы заменить на квадраты этих элементов, а не отрицательные на половину суммы квадратов соседних элементов.
Помогите плиз, заранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2010, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Все отрицательные элементы заменить на квадраты элементов (C++):

Все отрицательные элементы массива уменьшить в двое, а все нулевые элементы заменить на... - C++
Задан массив М, состоящий из К строк и N столбцов. Все отрицательные элементы уменьшить в двое, а все нулевые элементы заменить на – 0.1.

Заменить все отрицательные элементы массива их квадратами и отсортировать все элементы по возрастанию - C++
Помогите пожалуйста заменить все отрицательные элементы массива их квадратами и отсортировать все элемнты по возрастанию. Программу я...

Матрицы. Отрицательные элементы матрицы, расположенные выше главной диагонали, заменить на квадраты их значений - C++
Отрицательные элементы матрицы (n=6; m=6), расположенные выше главной диагонали, заменить на квадраты их значений. Найти максимальный среди...

Все элементы массива, предшествующие минимальному, заменить на их квадраты - C++
Дан одномерный массив А(2М). Если наименьший элемент этого массива меньше 1 и находится во второй половине этого массива, то все его...

Заменить все четные элементы на их квадраты (не верно работает) - C++
//Дан массив целых чисел //Заменить все четные элементы на их квадраты, //а нечетные удвоить #include "stdafx.h" #include...

Заменить все четные элементы массива на их квадраты, а нечетные удвоить - C++
Так и не пойму эти массивы, помогите с задачами, пожалуйста!!! 1. Удалить из массива М (26) первый положительный элемент. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
19.06.2010, 10:40 #3
Я хочу спросить, зачем используется два массива?
ISergey
19.06.2010, 11:16
  #4

Не по теме:

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

neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
19.06.2010, 12:10 #5
Все, я понял
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 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
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
19.06.2010, 12:30 #7
Никакого упощения не вижу.
Своим решением, первоначальный массив вы не измените.
А еще у вас ошибка в 19 строке
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 12:31 #8
угу и во втором форе если первый или последний элемент не отрицательный - выход за границу массива.
пс - не проще а упрощенней и мение универсальней.
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
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
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
19.06.2010, 14:12 #11
В задаче четко сказано, что полусумма квадратов соседних элементов.
У первого и последнего элемента, двух соседей нет => ничего с ними не делаем.
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 14:23 #12
да, так написано, но не сказано что соседних должно быть больше 1го. для 1го элемента будет 1 сосед всего, но он соседний элеменет,и его следует обработать, хотя эт только имхо. Правильный ответ знает только составитель задания)
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
19.06.2010, 15:24 #13
Сумма предпогагает в себе как минимум два слагаемых
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
19.06.2010, 15:28 #14
а для деления и достаточно 1го элемента.
(-1) го элемента не существует, значит он 0. (0+число)/2
Имхо постановка задания не однозначна.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2010, 15:28
Привет! Вот еще темы с ответами:

В одномерном массиве все четные элементы заменить на их квадраты, а нечетные умножить на 2 - C++
В одномерном массиве все четные элементы заменить на их квадраты, а нечетные умножить на 2.

Все четные элементы заменить на их квадраты, а нечетные удвоить (переделать с указателями) - C++
Необходимо переделать код, что бы в нем использовались указатели Дан массив целых чисел, все четные эл-ты заменить на их квадраты, а...

Дан файл вещественных чисел, заменить в нем все элементы на их квадраты - C++
Дан файл вещественных чисел.Заменить в нем все элементы на их квадраты.Заменить в нем все элементы на их квадраты.

Отрицательные элементы массива заменить на их абсолютную величину и все нечётные элементы на корень - C++
Дан массив целых чисел. Каждый отрицательный элемент заменить на его абсолютную величину. Все элементы с нечётными номерами заменить на их...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.06.2010, 15:28
Ответ Создать тему
Опции темы

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