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

исправить ошибки в коде - C++

Восстановить пароль Регистрация
 
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
18.11.2012, 17:29     исправить ошибки в коде #1
Помогите и исправьте ошибки в моём коде. Буду очень благодарен. Ссылка на условие задачи:
http://acm.timus.ru/problem.aspx?space=1&num=1880

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
#include <iostream>
 
using namespace std;
 
int main()
{
int n, k, l, i, a, b, c, chislo=0;
int *man=new int [100];
int *mak=new int [100];
int *mal=new int [100];
 
cin >> n;
for (i=0; i<=n-1; i++)
  cin >> man[i];
 
cin >> k;
for (i=0; i<=k-1; i++)
 cin >> mak[i];
 
cin >> l;
for (i=0; i<=l-1; i++)
 cin >> mal[i];
 
for (a=0; a<=n-1; a++)
 for (b=0; b<=k-1; b++)
  for (c=0; c<=l-1; c++)
   if (man[a] == mak[b] == mal[c])
    chislo++;
cout << chislo << endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2012, 17:29     исправить ошибки в коде
Посмотрите здесь:

C++ не могу исправить ошибки в коде
C++ Исправить ошибки в приведенном коде
нужно исправить ошибки в коде C++
C++ Исправить ошибки в коде
исправить ошибки в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kreative
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 4
18.11.2012, 18:01     исправить ошибки в коде #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
24
25
26
27
28
29
30
31
32
33
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    int n, k, l, i, a, b, c, chislo=0;
    int *man=new int [100];
    int *mak=new int [100];
    int *mal=new int [100];
 
    cin >> n;
    for (i=0; i<=n-1; i++)
        cin >> man[i];
 
    cin >> k;
    for (i=0; i<=k-1; i++)
        cin >> mak[i];
 
    cin >> l;
    for (i=0; i<=l-1; i++)
        cin >> mal[i];
 
    for (a=0; a<=n-1; a++)
        for (b=0; b<=k-1; b++)
            for (c=0; c<=l-1; c++)
                if (man[a] == mak[b] == mal[c])
                    chislo++;
    cout << chislo << endl;
 
    return 0;
}
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
18.11.2012, 18:21  [ТС]     исправить ошибки в коде #3
А в чём вообще отличие? Запустил - выдаёт те же самые неправильные ответы
Kreative
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 4
18.11.2012, 18:36     исправить ошибки в коде #4
наличие
C++
1
#include "stdafx.h"
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2012, 18:55     исправить ошибки в коде #5
Цитата Сообщение от Kreative Посмотреть сообщение
наличие Код C++
1 #include "stdafx.h"
это не панацея.
Там компилятор наоборот выдаст ошибку компиляции с такой строкой. Самая главная ошибка, то что под каждую команду выделяется всего 100 чисел, хотя по условию задачи их может быть до 4000.
Поиск лучше вести не тремя вложенными циклами а бинарным поиском (ведь по условию задачи числа расположены в порядке возрастания)
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
18.11.2012, 20:32  [ТС]     исправить ошибки в коде #6
valeriikozlov, а без бинарного способа моим способом(вложением циклов)можно решить? Изменил размер динамического массива до 4000, но всё равно программа не проходит даже первый тест. Подскажите, как можно написать программу без бинарного поиска.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.11.2012, 00:08     исправить ошибки в коде #7
Цитата Сообщение от лыс Посмотреть сообщение
Подскажите, как можно написать программу без бинарного поиска.
бинарный поиск хорошо, но в данном случае и первый массив упорядочен по возрастанию, поэтому вот этот способ считаю одним из самых оптимальных для этой задачи:
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
#include <iostream>
using namespace std;
int main()
{
    int n, k, l, i, a=0, b=0, c=0, chislo=0;
    cin >> n;
    int *man=new int [n];
    for (i=0; i<=n-1; i++)
        cin >> man[i];
    cin >> k;
    int *mak=new int [k];
    for (i=0; i<=k-1; i++)
        cin >> mak[i];
    cin >> l;
    int *mal=new int [l];
    for (i=0; i<=l-1; i++)
        cin >> mal[i]; 
    while(a<n && b<k && c<l)
    {
        while(b<k && mak[b]<man[a])
            b++;
        while(c<l && mal[c]<man[a])
            c++;
        if(b<k && mak[b]==man[a] && c<l && mal[c]==man[a])
            chislo++;
        a++;
    }
    cout << chislo << endl;
 
    return 0;
}
так сказать одновременное движение вперед по всем трем массивам.
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
19.11.2012, 08:38  [ТС]     исправить ошибки в коде #8
Спасибо,valeriikozlov, программа прошла все 20 тестов (когда запускал свою выдавало почему-то "обращение по недоступному адресу в памяти" - не знаете, почему?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 21:15     исправить ошибки в коде
Еще ссылки по теме:

Исправить ошибки в коде C++
Исправить ошибки в коде C++
C++ Разобраться и исправить ошибки в коде

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.11.2012, 21:15     исправить ошибки в коде #9
Цитата Сообщение от лыс Посмотреть сообщение
когда запускал свою выдавало почему-то "обращение по недоступному адресу в памяти" - не знаете, почему?
насчет "обращение по недоступному адресу в памяти" могу только предположить: был выход за пределы массива (лучше покажите код, на который выдавалось такое сообщение, тогда подскажу точно).
У Вас в коде есть еще ошибка - никогда так не пишите:
Цитата Сообщение от Kreative Посмотреть сообщение
C++
1
if (man[a] == mak[b] == mal[c])
правильно так:
C++
1
if (man[a] == mak[b] && man[a] == mal[c])
Yandex
Объявления
19.11.2012, 21:15     исправить ошибки в коде
Ответ Создать тему
Опции темы

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