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

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

Войти
Регистрация
Восстановить пароль
 
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
#1

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

18.11.2012, 17:29. Просмотров 404. Ответов 8
Метки нет (Все метки)

Помогите и исправьте ошибки в моём коде. Буду очень благодарен. Ссылка на условие задачи:
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++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Исправить ошибки в коде - C++
#include &lt;iostream&gt; using namespace std; int main() { int n; int i; int e = 0; int l = 0;

Исправить ошибки в коде - C++
пишу программу при компиляции ошибки main.cpp(19) : warning C4508: 'main' : function should return a value; 'void' return type...

Исправить ошибки в коде - C++
Пожалуйста помогите исправить ошибки Первая часть кода (вторая в комментариях) #define _CRT_SECURE_NO_WARNINGS #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++
4669 / 2495 / 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++
4669 / 2495 / 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++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; // ------------ -------------------------------- class TStudent { ...

Исправить ошибки в коде. - C++
Выдает ошибку, на скрине все есть

Исправить ошибки в коде - C++
int _tmain(int argc, _TCHAR* argv) { return 0; } #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;windows.h&quot; // Две...

Исправить ошибки в коде - C++
#include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(int argc, char *argv) { int p; float...


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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
4669 / 2495 / 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     исправить ошибки в коде
Ответ Создать тему
Опции темы

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