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

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

Войти
Регистрация
Восстановить пароль
 
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
#1

найти ошибку замена максимального - C++

10.07.2013, 07:20. Просмотров 294. Ответов 6
Метки нет (Все метки)

Задача: Найти и поменять местами элементы, имеющие минимальное и максимальное значения в массиве.
Код:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
#include <time.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale( LC_ALL,"Russian" );
 
 
    int k;
    cout << "Введите размер массива: ";
    cin >> k;
    cout << endl << endl;
    int  *mas = new int[k];
 
    cout << "Заполнить массив автоматичиски (y/n)? ";
    string str;
    int i;
    cin >> str;
    cout << endl;
    if (str == "y"){ 
        //автоматичиски     
        srand(time(0));
    for (i=0; i<k; i++)
        mas[i] = rand() % 201 - 99;
    }
    else { //вручную
        cout << "Тогда вводи вручную: " << endl;
        for (i=0; i<k; i++)
        cin >> mas[i];
    }
 
    //первый вывод
    cout << "Имеем mas[" << k << "]= ";
     for (i=0; i<k; i++)
        cout << mas[i] << " ";
     cout << endl;
 
     //поиск максимального и минимального
     int Min = mas[0];
     int Max = mas[0];
     int posMax = -1;
     int posMin = -1;
 
     for (i=0; i<k; i++){
        //Сначала минимальный
    if(mas[i]<Min){
    Min = mas[i];  //записыавем значение минимального
    posMin = i;    //записываем его позицию
    }
 
       //Потом максимальный
    if(mas[i]>Max){
    Max = mas[i];  //записыавем значение максимального
    posMax = i;     //записываем его позицию
    }
     }
    //вывод максимального и минимального
    cout << "Максимальный= " << Max << endl;
    cout << "Минимальный= " << Min << endl;
 
    //меняем местами (перезаписывая значения)
    mas[posMax]=Min;
    mas[posMin]=Max;
 
    //последний вывод
    cout << "Результат mas[" << k << "]= ";
     for (i=0; i<k; i++)
        cout << mas[i] << " ";
     cout << endl << endl;
 
    system ("pause");
    return 0;
}
Код вроде верный, однако максимальный так и не заменяется на минимальный! подскажите в чем может быть загвоздка?
0
Миниатюры
найти ошибку замена максимального  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2013, 07:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос найти ошибку замена максимального (C++):

Массивы. Найти среднее арифметическое элементов массива, расположенных до максимального элемента (найти ошибку в задании) - C++
Препод говорит что тут есть ошибка, но где не говорит, прошу если кото-нибуть заметит сообщите. Ввести одномерный статический массив...

Составьте программу обмена местами максимального и минимального элементов на побочной диагонали матрицы B[n][n]. Помогите найти ошибку. - C++
Составьте программу обмена местами максимального и минимального элементов на побочной диагонали матрицы B. Помогите найти ошибку вроде...

Замена максимального на минимальный - C++
Написал, без ошибок, но выдаёт ошибку:Run-Time Check Failure #3 - The variable 'menu' is being used without being initialized., помогите...

Поиск и замена максимального элемента двумерного массива - C++
Добрый день, надо написать динамический массив который находит максимальный элемент и меняет его с элементом A.

Поиск максимального значения матрицы,замена элементов - C++
Необходимо найти максимальный элемент матрицы и поменять его с последним. Вот что у меня получилось: #include &lt;iostream.h&gt; #include...

Замена первого максимального элемента в одномерном массиве на 0 - C++
Помогите пожалуйста! Дан одномерный массив, заполнен рандомно. Среди элементов несколько максимальных. Нужно заменить первый максимальный...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,379
Записей в блоге: 3
Завершенные тесты: 1
10.07.2013, 07:39 #2
C++
1
2
     int posMax = 0;
     int posMin = 0;
0
Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
10.07.2013, 07:44 #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
     int posMax = 0;
     int posMin = 0;
А если все значения будут больше нуля, минимальное он не найдёт, и posmin будет -1. Такой вариант не подойдёт, я щитаю

Добавлено через 27 секунд
о нет, я перепутал всё, удалите пост

Добавлено через 1 минуту
:-D
0
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,379
Записей в блоге: 3
Завершенные тесты: 1
10.07.2013, 07:44 #4
Цитата Сообщение от Praktolock Посмотреть сообщение
А если все значения будут больше нуля,
Причем тут больше нуля? У Вас минимум и максимум инициализируются первым элементом массива, соответственно и индекс должен быть 0:
C++
1
2
     int Min = mas[0];
     int Max = mas[0];
0
Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
10.07.2013, 07:46 #5
Цитата Сообщение от Praktolock Посмотреть сообщение
о нет, я перепутал всё, удалите пост
Добавлено через 1 минуту
:-D
:-(
0
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,379
Записей в блоге: 3
Завершенные тесты: 1
10.07.2013, 07:48 #6
И тут желательно проверить, что k > 0
C++
1
    cin >> k;
если это не так, то либо заново спрашиваем, либо выход
0
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
10.07.2013, 08:13  [ТС] #7
Это уже дело техники)
C++
1
2
int posMax = 0;
int posMin = 0;
Помогло! Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2013, 08:13
Привет! Вот еще темы с ответами:

Двумерный массив, сравнение, поиск максимального, замена - C++
Имеется двумерный массив 6х6. Если все элементы второго столбца равны 1, то заменить максимальный элемент таблицы на 100.

Цикл на нахождение максимального элемента и замена его на данный - C++
Привет всем. У меня есть цикл на нахождение максимального элемента и замены его значение на значение R, но я его не правильно написал, в...

Замена максимального элемента массива на среднее арифметическое (арифметика указателей) - C++
Написать программу, которая заменяет значение максимального элемента массива на среднее арифметическое элементов массива. Массив из 8 целых...

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


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

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

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