Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2017, 10:49   #1
oksanavol
 
Регистрация: 28.05.2017
Сообщений: 8
По умолчанию Функция с масиввом целочисленных значений

Функция принимает на вход массив целочисленных значений. Должна вернуть набор элементов, которые встречаются в массиве более одного раза (должны быть отсортированы). Какая временная сложность?
Что я сделала:
Код:
сhar array[10];
array.insert('A');
array.insert('C');
array.insert('A');
array.insert('C');
array.insert('K');
array.insert('C');
array.insert('K');
array.insert('E');
array.insert('Q');
array.insert('P');
int FindDuplicates(char array)
{
for(int  index = 0; index  != 9; ++index)
{
    int  temp = 0;
    if (index  == array)
     ++temp;
}
};
А дальше я не знаю как делать. Я не программист. Мне нужно на зачет это сделать.

Последний раз редактировалось oksanavol; 28.05.2017 в 10:53.
oksanavol вне форума Ответить с цитированием
Старый 28.05.2017, 10:53   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Цитата:
Сообщение от oksanavol Посмотреть сообщение
Какая временная сложность?
- я не знаю сколько у Вас времени это займет?:D Судя по-тому, что Вы не программист - много.:D
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 28.05.2017, 10:59   #3
oksanavol
 
Регистрация: 28.05.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
- я не знаю сколько у Вас времени это займет?:D Судя по-тому, что Вы не программист - много.:D
та нет. часовая сложность - логарифмическая я так поняла. но аочему я не могу сказать. часовая сложность програмы)
oksanavol вне форума Ответить с цитированием
Старый 28.05.2017, 11:08   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Нужно создать еще 1 такой же массив Duplicates[10] - немного не экономно, но пофиг на это, так мы уйдем от динамических массивов. Кстати, Ваш массив array[10] - пересекается с системным массивом array. Назовите свой массив как-нибудь по-другому.
Потом нужно завести цикл for(z = 0) - проход по всем элементам массива. Потом еще 1 цикл for(), который стартует от z+1 до конца массива(см. код).
Код:
#define Size 10
char arr[Size], na[Size]/*-новый массив дубликатов*/;
int z, f, pna = 0/*указатель на новый элемент в массиве na[Size]*/;
bool Duplicate;
using name space std;

for(z = 0; z < Size; z++)
{
    Duplicate = false;
    for(f = z+1; f < Size; f++)
    {
        if(arr[z] == arr[f])
        {
            Duplicate = true;
            break;
        }
    }
    if(Duplicate)
    {
        na[pna] = arr[z];
        pna++;
    }
}

cout << "Novii massiv dublicatov:\n";
for(z = 0; z < pna; z++)
    cout << na[z] << " ";
Массив Duplicates[Size] в этой программе называется na[Size].
Желаю приятного разбирания программы.:D Не компилировал - исправляйте баги, если таковые имеются.
Товарищи, профессионалы, подскажите, пожалуйста, что за метод insert() вот здесь:
Цитата:
Сообщение от oksanavol Посмотреть сообщение
Код:
array.insert('C');
Что-то я искал в Интернете - не нашел.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.

Последний раз редактировалось Cuprum5; 28.05.2017 в 11:16. Причина: Добавил код: if(Duplicate)! - Исправил баг.
Cuprum5 вне форума Ответить с цитированием
Старый 28.05.2017, 11:43   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Что-то я искал в Интернете - не нашел.
Это шарп

Странно, я не знал, что без индекса вставки можно юзать...
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 28.05.2017, 11:47   #6
oksanavol
 
Регистрация: 28.05.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Это шарп

Странно, я не знал, что без индекса вставки можно юзать...
парни, я ж не программист) но да тупанула. я знала что через индекс нужно записывать. Я код который мне скинуле так и не поняла. очень много просто букв и я запуталась (((
oksanavol вне форума Ответить с цитированием
Старый 28.05.2017, 11:52   #7
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Ну так Вы же не программист - понятное дело. Спрашивайте, что непонятно.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 28.05.2017, 12:17   #8
oksanavol
 
Регистрация: 28.05.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Ну так Вы же не программист - понятное дело. Спрашивайте, что непонятно.
я так сделала, но у меня с вектором много ошибок+ нужно еще щетчик сделать а я не вдупляю где именно его ставить.
Код:
#include "stdafx.h"
#include <iostream>
#include <vector>

template<size_t size>
int* FindDuplicates(int array[size])
{
	std::vector<size_t> duplicates(size);
	size_t index = 0;

	for (size_t i = 0; i < size; ++i)
	{
		int temp = std::count(array, size + array, array[i]);
		int temp1 = std::count(duplicates, size + duplicates, array[i]);
		if (temp > 1)
			if (!temp1)
				duplicates[index++] = array[i];
	}
	return duplicates;
};

int main(int argc, int *argv[])
{
	int array[10] = { 1, 4, 5, 7, 1, 8, 9, 9, 3};
	int* duplicates = FindDuplicates<10>(array);

	for (int i = 0; i < 10 && duplicates[i]; ++i)
		std::cout << duplicates[i] << std::endl;
	return 0; 
}
oksanavol вне форума Ответить с цитированием
Старый 28.05.2017, 12:18   #9
oksanavol
 
Регистрация: 28.05.2017
Сообщений: 8
По умолчанию

кричит на эту строчку
Код:
int temp1 = std::count(duplicates, size + duplicates, array[i]);
и на эту
Код:
return duplicates;
oksanavol вне форума Ответить с цитированием
Старый 28.05.2017, 12:25   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 736
По умолчанию

Цитата:
Сообщение от oksanavol Посмотреть сообщение
Код:
template<size_t size>
- здесь же по-моему пишется class или type(или typedef), не помню уже. Ты, короче надоела уже все в кашу мешать! Я же тебе написал код! Что тебе еще нужно?!!!!!
Начала с простой программы на C#. Я тебе написал код на С++ с комментариями, ты его отвергла, сама предлагаешь код с шаблонами и векторами - это очень сложно для начинающего. Ты дура что-ли или что?!!!!!
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Конвертация строки в двумерный массив целочисленных значений alexelev Помощь студентам 5 01.07.2013 00:11
Поиск по бинарному дереву целочисленных значений smeaz Помощь студентам 0 05.12.2012 21:05
Функция OR но для шести значений Флина Microsoft Office Excel 12 13.11.2010 14:35
Функция: возвращение нескольких значений. Вадим Буренков Общие вопросы Delphi 2 14.05.2009 18:05
Функция ЕСЛИ и диапазоны значений. Ник Харди Microsoft Office Excel 3 05.12.2007 13:39