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

Простая задача с массивами - C++

Восстановить пароль Регистрация
 
Арсен
21 / 21 / 0
Регистрация: 04.05.2012
Сообщений: 73
09.05.2012, 20:30     Простая задача с массивами #1
Добрый день, на сайте ********/asp/gb.asp?page2=1&id=9&page=1 есть задача,

Я ее решил, у меня все работает, и когда я подставляю в input.txt значения примеров и сравниаю ответ со своим ответом, то все правильно выводится.

Но когда я задачку отправляю на сервер для проверки мне на первом же тести пишется что неправильный ответ.


Где и в чем у меня ошибка?

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 <fstream>
 
using namespace std;
 
int main()
{
    ifstream iFile("input.txt");
    ofstream oFile("output.txt");
    int cnt;
    iFile >> cnt;
    int *arr = new int[cnt];
    int max,min,pmd,pbe;
    int mxInd,mnInd,k;
    for(int i = 0; i<=cnt; i++)
        iFile >> arr[i];
    pmd = 0;
    for(int i = 0; i<=cnt; i++)
        if(arr[i]>0)
            pmd += arr[i];
    max = arr[0];
    min = arr[0];
    mxInd = 0;
    mnInd = 0;
    for(int i = 0; i<cnt; i++)
    {
        if(arr[i]>max){max = arr[i];mxInd = i;}
        if(arr[i]<min){min = arr[i];mnInd = i;}
    }
    
    if(mnInd>mxInd)
    {
        k = mnInd;
        mnInd = mxInd;
        mxInd = k;
    } 
 
    pbe = 1;
    for(int i = mnInd+1; i<mxInd; i++)
        pbe *= arr[i];
    oFile << pmd << " " << pbe;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 20:30     Простая задача с массивами
Посмотрите здесь:

C++ Простая задача.
C++ Простая задача?
простая задача C++
Простая задача C++
Простая задачка с массивами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.05.2012, 21:12     Простая задача с массивами #2
Цитата Сообщение от Арсен Посмотреть сообщение
Где и в чем у меня ошибка?
во-первых, в конце main() напишите return 0;
во-вторых, сделайте проверку на то что mxInd больше mnInd на 2 и более. Если нет (между максимальным и минимальным нет чисел, т.к. они стоят рядом, или совпадают), то выводите произведение 0 (у Вас выводит 1).
Арсен
21 / 21 / 0
Регистрация: 04.05.2012
Сообщений: 73
09.05.2012, 22:29  [ТС]     Простая задача с массивами #3
Спасибо, но у меня всеравно тест не проходит

вот код:

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream iFile("input.txt");
    ofstream oFile("output.txt");
    int cnt;
    iFile >> cnt;
    int *arr = new int[cnt];
    int max,min,pmd,pbe;
    int mxInd,mnInd,k;
    for(int i = 0; i<=cnt; i++)
        iFile >> arr[i];
    pmd = 0;
    for(int i = 0; i<=cnt; i++)
        if(arr[i]>0)
            pmd += arr[i];
    max = arr[0];
    min = arr[0];
    mxInd = 0;
    mnInd = 0;
    for(int i = 0; i<cnt; i++)
    {
        if(arr[i]>max){max = arr[i];mxInd = i;}
        if(arr[i]<min){min = arr[i];mnInd = i;}
    }
    if(mnInd>mxInd)
    {
        k = mnInd;
        mnInd = mxInd;
        mxInd = k;
    }
    pbe = 1;
    if(mxInd-mnInd < 2) oFile << pmd << " " << 0;
    else
    {
        for(int i = mnInd+1; i<mxInd; i++)
            pbe *= arr[i];
        oFile << pmd << " " << pbe;
    }
    return 0;
}
Не могу понять в чем ошибка.
Пробовал несколько условий ставить но без смысленно, вроде я у себя тести сам писал разние знаечения во всех случаях правильный ответ.
А в чем проблема не понемаю.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.05.2012, 05:57     Простая задача с массивами #4
Цитата Сообщение от Арсен Посмотреть сообщение
А в чем проблема не понемаю.
В двух местах исправите одинаковую ошибку и сдадите:

Цитата Сообщение от Арсен Посмотреть сообщение
C++
1
for(int i = 0; i<=cnt; i++)// Здесь выход за границы массива. Нужно писать i<cnt
Yandex
Объявления
10.05.2012, 05:57     Простая задача с массивами
Ответ Создать тему
Опции темы

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