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

выдаёт неполный ответ... - C++

Восстановить пароль Регистрация
 
roman007
0 / 0 / 0
Регистрация: 10.10.2011
Сообщений: 15
29.11.2011, 10:00     выдаёт неполный ответ... #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
# define n 5
using namespace std;
int main (void)
{
    int mass[n],i,j,max,a;
    cout<<"vvedite\n";
    for(i=1;i<n;i++)
    cin>>mass[i];
    for (i=0;i<n;i++) {
        max=i;
        for (j=i;j<n;j++)
            if(mass[j]>mass[max] && mass[max]>0) max=j;
            a=mass[i];
            mass[i]=mass[max];
            mass[max]=a;
    }//for (i = 0; i < n - 1; i++)
    for (i=1;i<n;i++)
    cout<<mass[i]<<" ";
    getch ();
    return 0;
}
ввожу 5 чисел, а в ответе выдаёт 4...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HackSign
33 / 33 / 13
Регистрация: 23.11.2006
Сообщений: 109
29.11.2011, 10:12     выдаёт неполный ответ... #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
#include <iostream>
#include <conio.h>
# define n 5
using namespace std;
int main (void)
{
    int mass[n],i,j,max,a;
    cout<<"vvedite\n";
    for(i=1;i<=n;i++)
    cin>>mass[i];
    for (i=0;i<=n;i++) {
        max=i;
        for (j=i;j<=n;j++)
            if(mass[j]>mass[max] && mass[max]>0) max=j;
            a=mass[i];
            mass[i]=mass[max];
            mass[max]=a;
    }//for (i = 0; i < n - 1; i++)
    for (i=1;i<=n;i++)
    cout<<mass[i]<<" ";
    getch ();
    return 0;
}
roman007
0 / 0 / 0
Регистрация: 10.10.2011
Сообщений: 15
29.11.2011, 10:14  [ТС]     выдаёт неполный ответ... #3
только я немогу найти что ты исправил)
HackSign
33 / 33 / 13
Регистрация: 23.11.2006
Сообщений: 109
29.11.2011, 10:17     выдаёт неполный ответ... #4
В цикле for вместо знака < надо было поставить <= тогда выводится все полностью.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
29.11.2011, 10:33     выдаёт неполный ответ... #5
HackSign, а это ничего, что происходит выход за границы массива?
roman007, индексы массивов в С/С++ начинаются не с единицы, а с нуля, соответственно, циклы ввода-вывода должны выглядеть так:
C++
1
2
for(i = 0; i < n; ++i)
   // необходимые действия с массивом
roman007
0 / 0 / 0
Регистрация: 10.10.2011
Сообщений: 15
29.11.2011, 14:44  [ТС]     выдаёт неполный ответ... #6
а можешь подробней объяснить отличие i++ от ++i ?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
29.11.2011, 14:53     выдаёт неполный ответ... #7
roman007, ++i - сначала i увеличится на единицу, после чего будет возвращено новое значение i (инфиксный инкремент). i++ - будет возвращено старое значение i, после чего i увеличится на единицу (постфиксный инкремент). Это если грубо говоря
roman007
0 / 0 / 0
Регистрация: 10.10.2011
Сообщений: 15
29.11.2011, 18:13  [ТС]     выдаёт неполный ответ... #8
Nameless One, как должна тогда правильно выглядеть программа? ато я запутался уже совсем...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 18:30     выдаёт неполный ответ...
Еще ссылки по теме:

C++ Проблемка (программа сразу закрывается и не выдаёт ответ)
C++ Программа не выдаёт нужный ответ
Односвязные списки: недопустимый неполный тип C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
29.11.2011, 18:30     выдаёт неполный ответ... #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
34
35
36
#include <iostream>
 
int main ()
{
    const size_t N = 5;
 
    int arr[N];
    int max;
 
    std::cout << "Please enter array:" << std::endl;
 
    for(size_t i = 0; i < N; ++i)
    {
    std::cout << i << "> ";
    std::cin >> arr[i];
    }
 
    for(size_t i = 0; i < N; ++i)
    {
    max = i;
 
    for(size_t j = i + 1; j < N; ++j)
        if(arr[j] > arr[max] && arr[max] > 0)
        max = j;
 
    size_t temp = arr[i];
    arr[i] = arr[max];
    arr[max] = temp;
    }
 
    for(size_t i = 0; i < N; ++i)
    std::cout << arr[i] << " ";
    std::cout << std::endl;
    
    return 0;
}
Yandex
Объявления
29.11.2011, 18:30     выдаёт неполный ответ...
Ответ Создать тему
Опции темы

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