Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
1

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

10.07.2013, 07:20. Просмотров 324. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

Поиск максимального значения матрицы,замена элементов
Необходимо найти максимальный элемент матрицы и поменять его с последним. Вот...

6
Croessmah
++Ͻ
14611 / 8365 / 1576
Регистрация: 27.09.2012
Сообщений: 20,561
Записей в блоге: 2
Завершенные тесты: 1
10.07.2013, 07:39 2
C++
1
2
     int posMax = 0;
     int posMin = 0;
0
Praktolock
71 / 71 / 18
Регистрация: 29.11.2011
Сообщений: 345
10.07.2013, 07:44 3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
     int posMax = 0;
     int posMin = 0;
А если все значения будут больше нуля, минимальное он не найдёт, и posmin будет -1. Такой вариант не подойдёт, я щитаю

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

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

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

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

Цикл на нахождение максимального элемента и замена его на данный
Привет всем. У меня есть цикл на нахождение максимального элемента и замены его...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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