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

Найти количество общих элементов в массивах. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать, чтобы new возвращал NULL? http://www.cyberforum.ru/cpp-beginners/thread924293.html
Как сделать, чтобы new возвращал NULL?
C++ запрет шаблонов У меня есть некоторая шаблонная функция, которая определена для некоторого набора типов данныхх. Как можно сделать так, чтобы функцию нельзя было бы использовать с др.типами? http://www.cyberforum.ru/cpp-beginners/thread924290.html
Подскажите, пожалуйста, как исправить ошибку C++
Условие задачи: Разработать программу для работы с БД, которая обеспечивает автоматизированную продажу авиабилетов на месяц вперед. Программа проверяет правильность каждой даты(не разрешается вводить прошедшую дату), делает возможным менять расписание. main.cpp #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <iostream>
Ошибка при работе с памятью C++
Если ввести например 6, 0, чтобы выбросить исключение. То по завершение программы выскакивает ошибка. В чём может быть дело? Так что то про кучу. class MyExcept{ public: char *buf; MyExcept(char *comment){ buf = new char; strcpy(buf, comment); }
C++ Что делать с ошибкой: C2440: инициализация: невозможно преобразовать "int **" в "int *" http://www.cyberforum.ru/cpp-beginners/thread924248.html
Задание, сделать класс динамического массива шаблонным. Вот, вроде бы сделал, но наткнулся на ошибку, что не так? Код: #include<iostream> #include<conio.h> using namespace std; template <class T> class Dynamic_array
C++ Не перехватывается исключений int a; try{ cin >> a; cout << a / 0 << endl; }catch(...){ cout << "err" << endl./ } подробнее

Показать сообщение отдельно
schoolboy_
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 59
16.07.2013, 22:32     Найти количество общих элементов в массивах.
Даны два возрастающих массива x: array[1..k] of integer
и y: array[1..l] of integer. Найти количество общих элементов в этих массивах.
Вот решение:
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
#include "stdafx.h"
#include "iostream"
 
using namespace std;
 
int i = 0, j = 0, n =  0;
 
int array[6] = {1, 2, 3, 4, 5, 6};
int array1[6] = {3, 4, 5, 6, 7, 8};
 
int main()
{
    for(i = 0; i != 6; i++)
    {
        for(j = 0; j != 6; j++)
        {   
            if(array[i] == array1[j])
                n++;
        }
    }
    cout<<n<<endl;
    system("pause");
    return 0;
}
Но, хотелось бы за меньшее кол-во действий. Например так:
Кликните здесь для просмотра всего текста

Pascal
1
2
3
4
5
6
7
8
9
while (k1<> k) and (l1 <> l) do begin
if [k1 ] < [l1+1] then begin
k1 := k1 + 1;
end else if [k1] > y[l1] then begin
l1 := l1 + 1;
 else begin 
k1 := k1 + 1;
l1 := l1 + 1;
n := n + 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
int i = 0, j = 0, n =  0;
 
int array[6] = {1, 2, 3, 4, 5, 6};
int array1[6] = {3, 4, 5, 6, 7, 8};
 
int main()
{
    while(i != 6 && j != 6)
    {
        array[i] < array1[j] ? i++ : j++;
 
        if(array[i] == array1[j])
        {
            n++;
            i++;
            j++;
        }
    }
 
cout<<n<<endl;
 
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru