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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2017, 10:53   #1
Shved2298
Пользователь
 
Регистрация: 08.05.2017
Сообщений: 19
По умолчанию [C++] Максимальный элемент поменять местами со вторым нулевым.

Максимальный элемент поменять местами со вторым нулевым.
Помогите пожалуйста с программой на с++, зарание спасибо
Shved2298 вне форума Ответить с цитированием
Старый 08.05.2017, 12:00   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.05.2017, 22:46   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
#include <iostream>
#include <cmath>

using std::endl;
using std::cin;
using std::cout;

int main()
{

    cout<<"please, input size_array: ";
    int n=0;
    cin>>n;

    //  int arrays[n]={1,-1,0,0,5,7,0,-9,10,0,9};
     int arrays[n];

    for (int i=0;i<n;i++){
        {
          arrays[i]=rand()%80-75;
        }
        cout<<endl<<"elem "<<i+1<<": "<<arrays[i];
    }


    int zero=0; int zero_num;

    bool ok=false;

    for (int i=0;i<n;i++)
    {
        if (arrays[i]==0) zero++;
        if ((zero>1)&&arrays[i]==0) {zero_num=i;ok=true;break;}
    }

    if (ok)

    {
        cout<<endl<<endl;
        int max_nom;
        int max=arrays[0];

        for (int i=1;i<n;i++)
            if (arrays[i]>=max) {max_nom=i;max=arrays[i];}


        int tmp=arrays[zero_num];
        arrays[zero_num]=arrays[max_nom];
        arrays[max_nom]=tmp;


        cout<<endl<<"Zero elem nomber: "<<zero_num+1<<endl;
        cout<<"max element nomber: "<<max_nom+1<<endl;

        for (int i=0;i<n;i++)
            cout<<endl<<"elem "<<i+1<<": "<<arrays[i];

        cout<<endl<<"Zero elem nomber: "<<max_nom+1<<endl;
        cout<<"max element nomber: "<<zero_num+1;

    } else cout<<endl<<"is zero to two position not search!";



    cout<<endl<<"DONE!";
    return 0;
}
не забудьте про весы))
from dark to light)

Последний раз редактировалось Алексей_2012; 09.05.2017 в 22:53.
Алексей_2012 вне форума Ответить с цитированием
Старый 10.05.2017, 00:30   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
не забудьте про весы
Новички не могут на них влиять, зря решал
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.05.2017, 01:39   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Alex11223, ахах, удаляю код...

да нет, не зря, пусть будет)) мало ли кто нагуглит потом такую же задачу)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 10.05.2017, 12:16   #6
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
	std::vector <int> v{ -11, 4, 10, -6, 0, -8, 3, 3, 0, 9, 2, 0, 5 };

	std::swap (v[ std::distance (v.begin(), std::find(v.begin() + 1 + std::distance(v.begin(),
		std::find(v.begin(),v.end(),0)),v.end(),0))  ],
		v[std::distance (v.begin(), std::max_element(v.begin(), v.end()))]);

	std::copy(v.begin(), v.end(), std::ostream_iterator <int> (std::cout, " "));
	system("pause");
}
Мановар вне форума Ответить с цитированием
Старый 10.05.2017, 16:59   #7
Shved2298
Пользователь
 
Регистрация: 08.05.2017
Сообщений: 19
По умолчанию

Спасибо большое.Я только начал изучать язык с++ хочу разобраться, спасибо за код большое.Но я не разберусь в вашем коде, что он делает?Находит максимальный элемент и находит один из нулей?

Последний раз редактировалось Shved2298; 10.05.2017 в 17:39.
Shved2298 вне форума Ответить с цитированием
Старый 15.05.2017, 23:32   #8
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Цитата:
Сообщение от Shved2298 Посмотреть сообщение
Но я не разберусь в вашем коде,
Здесь два кода. Какой не понятен? И что именно не понятно?
Мановар вне форума Ответить с цитированием
Старый 16.05.2017, 07:22   #9
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Код:
if ((zero>1)&&(arrays[i]==0)) {zero_num=i;ok=true;break;}
- Вы, по-моему, ошибку допустили в коде. Здесь должно быть
Код:
if((zero==1)&&(arrays[i]==0))
Если будет как у Вас(zero>1), то, по-моему, второй 0 проедется и зафиксируется 3-ий 0.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 16.05.2017, 07:26   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Код:
int max_nom, max=arrays[0];

for(int i=1;i<n;i++)
     if(arrays[i]>=max){max_nom=i;max=arrays[i];}
- вот это поиск максимума. В который раз задаюсь вопросом: зачем новичкам писать программы, если они в них все-равно разобраться не могут?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять местами минимальный и максимальный элемент массива Лераа Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2012 00:32
Нужно найти максимальный и минимальный элемент массива и поменять их местами xxxRiderxxx Помощь студентам 2 25.07.2012 22:30
Как в паскале поменять местами максимальный элемент с восьмым в массиве? gylayko Помощь студентам 12 15.11.2011 20:54
Паскаль! поменять местами максимальный и минимальный элемент матрицы. wrmarw Помощь студентам 4 08.05.2010 13:06
Максимальный элемент массива поменять местами с четвертым. Katie Помощь студентам 2 13.01.2010 05:59