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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2014, 21:58   #1
Facktor
 
Регистрация: 09.02.2014
Сообщений: 4
По умолчанию Задачи , построенные с помощью функций С++ . Нужна помощь.

Доброго времени суток форумчане ! "Подтолкните" в решении следующих задач , я забуксовал ...

Реализовать функцию, которая принимает массив (плюс его длину) , а также число n , и возвращает индекс числа в массиве или -1 , если такого числа нет. Структура : int Search (int a [], const int n, const int key);

Реализовать функцию, которая принимает массив и выводит на экран те элементы , значение которых являются простыми числами. Структура (IsPrimeNumber) , следовательно я думаю что функция должна выглядеть примерно так: primeNumbersInArray (int a[] , const int);

Реализовать функцию сортировки массива любым алгоритмом : void sortArray (int a[],const int n);

4 Реализовать функцию, которая принимает массив и возвращает индекс его максимального элемента

5 . Аналогично с минимальным элементом.

Р.S. Изучаю С++ не продолжительное время , объяснить решение первых двух задач , остальные похожие думаю я справлюсь , спасибо.

Вот мой недоработанный код 1 задачи :

Код:
#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;
int Search(int a[],const int n,const int key)
{
    int i;
 
    for ( i = 0; i < n; i++)
        if ( a[i] == key )
            return i;
        else
    return -1;
}
 
void main ()
{
    SetConsoleOutputCP(1251);
    int a [5];
    cout << "Введите массив:";
    cin >> a [5] ;
    Search( a,3, 5);
    int key=5;
}

Последний раз редактировалось Facktor; 09.02.2014 в 22:02.
Facktor вне форума Ответить с цитированием
Старый 09.02.2014, 22:22   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
void sortArray (int a[],const int n);
Ну, с какого бодуна, спрашивается? Вам знак & ни о чём не говорит? С Массивами, в С++, нужно работать по ссылкам, а не напрямую, как Вы попытались.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 09.02.2014, 22:26   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я забуксовал ...
В чем же буксовка?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.02.2014, 23:05   #4
Facktor
 
Регистрация: 09.02.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Ну, с какого бодуна, спрашивается? Вам знак & ни о чём не говорит? С Массивами, в С++, нужно работать по ссылкам, а не напрямую, как Вы попытались.
Уважаемый, я бы с удовольствием , но есть одна загвоздка , я ссылки еще не изучал , так как насчет помощи конкретно интересует как бы до кучи собрать программу , а точнее каким образом через функцию вернуть значение числа и вывести его индекс. Need your help!

Цитата:
Сообщение от Stilet Посмотреть сообщение
В чем же буксовка?
Cобственно в том , что я туплю и не могу собрать прогу до кучи , так как функции проходили только одну пару , а конкретно помогите дописать код , чтобы на выходе возвращал индекс числа в массиве, если таковое присутствует - или -1 в противном случае.

Последний раз редактировалось Stilet; 10.02.2014 в 20:37.
Facktor вне форума Ответить с цитированием
Старый 10.02.2014, 19:28   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Ну, с какого бодуна, спрашивается? Вам знак & ни о чём не говорит? С Массивами, в С++, нужно работать по ссылкам, а не напрямую, как Вы попытались.
Интересно, с чего вы взяли, что в С++ с массивами нужно работать по ссылкам? В данном примере массив можно передать и по значению (а уж тем более, если ссылки еще не изучали).
Не нужно людей дезинформировать.

Первая задача
Код:
#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;

int Search(int a[], const int n, const int key)
{
    int i = 0;
    for ( i; i < n; i++) 
    {
        if ( a[i] == key ) 
        {
            return i; // else не нужен, функция и так вернет -1 если не найдет совпадений
        }
    }
    return -1;
}
 
int main ()
{
    SetConsoleOutputCP(1251);
    const int ARRAY_SIZE = 5;
    int key = 0, result = 0;
    int a[ARRAY_SIZE];

    cout << "Введите массив:";
    for(int i = 0; i < ARRAY_SIZE; i++) // массив нужно заполнять в цикле
    { 
       cin >> a[i];
    }

    cout << "Введите элемент для поиска: ";
    cin >> key;
    result = Search(a, ARRAY_SIZE, key); // второй параметр - размер массива, не путайте порядок

    if(result == -1) 
    {
        cout << "Такого элемента в массиве нет\n";
    }
    else 
    {
        cout << "Индекс искомого элемента в массиве: " << result << std::endl;
    }
    
    return 0;
}

Последний раз редактировалось MaTBeu; 10.02.2014 в 19:31.
MaTBeu вне форума Ответить с цитированием
Старый 10.02.2014, 23:13   #6
Facktor
 
Регистрация: 09.02.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Интересно, с чего вы взяли, что в С++ с массивами нужно работать по ссылкам? В данном примере массив можно передать и по значению (а уж тем более, если ссылки еще не изучали).
Не нужно людей дезинформировать.

Первая задача
Код:
#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;

int Search(int a[], const int n, const int key)
{
    int i = 0;
    for ( i; i < n; i++) 
    {
        if ( a[i] == key ) 
        {
            return i; // else не нужен, функция и так вернет -1 если не найдет совпадений
        }
    }
    return -1;
}
 
int main ()
{
    SetConsoleOutputCP(1251);
    const int ARRAY_SIZE = 5;
    int key = 0, result = 0;
    int a[ARRAY_SIZE];

    cout << "Введите массив:";
    for(int i = 0; i < ARRAY_SIZE; i++) // массив нужно заполнять в цикле
    { 
       cin >> a[i];
    }

    cout << "Введите элемент для поиска: ";
    cin >> key;
    result = Search(a, ARRAY_SIZE, key); // второй параметр - размер массива, не путайте порядок

    if(result == -1) 
    {
        cout << "Такого элемента в массиве нет\n";
    }
    else 
    {
        cout << "Индекс искомого элемента в массиве: " << result << std::endl;
    }
    
    return 0;
}
Спасибо , помоги пожалуйста со второй задачей , не могу понять как цикл правильно написать , вот мучаюсь , знаю , что не верно пишу , но всё же:

Код:
#include <iostream>
using namespace std;
void primeNumbersInArray (int array [],const int n);
		bool isPrimeNumber = true;
    int i = 0;
    for ( i; i< n; i++) 
    {
        if 
        {
            return i; 
        }
			if(number % i == 0)
			{
				isPrimeNumber = false;
				break;
			}
		}
		if(isPrimeNumber) 
		{
			cout << number << " ";
		}
	}
Facktor вне форума Ответить с цитированием
Старый 11.02.2014, 18:33   #7
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
Сообщение от Facktor Посмотреть сообщение
Спасибо , помоги пожалуйста со второй задачей , не могу понять как цикл правильно написать , вот мучаюсь , знаю , что не верно пишу , но всё же:

Код:
#include <iostream>
using namespace std;
void primeNumbersInArray (int array [],const int n);
		bool isPrimeNumber = true;
    int i = 0;
    for ( i; i< n; i++) 
    {
        if 
        {
            return i; 
        }
			if(number % i == 0)
			{
				isPrimeNumber = false;
				break;
			}
		}
		if(isPrimeNumber) 
		{
			cout << number << " ";
		}
	}
А алгоритм у тебя есть? Если есть - написать программу не проблема. Подумай еще над решением.
MaTBeu вне форума Ответить с цитированием
Старый 16.02.2014, 21:01   #8
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

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

Первый момент, это то, что функция не возвращает значение,
перед ней стоит void.
Это означает, что массив передается по указателю,
иначе бы функция не сортировала. Имя статического массива -это константный указатель на его первый элемент.
Код:
void my_sortArray (int a[],const int n);
или

Код:
void my_sortArray (int* const a,const int n);

Программа сортировки:
Код:

#include <cstdlib>
#include <iostream>

using namespace std;

// функция сортировки
void my_sortArray (int a[],const int n)
        {
            // один из недостатков две временные переменные j и i и два цикла
        	for(int i=0;i<n;i++)
        	 		for(int j=0;j<n;j++)
                		{
                			if (a[i]<a[j])
                				{
                                  // один из недостатков временная переменная o
                		               int o=a[i];
                                               a[i]=a[j];
                                                a[j]=o;
                				}
                 		} 
                	 
        }
        
int main(int argc, char *argv[])
{
    //упорядочить по ворастанию
    
	const int n=5;
	int a[n];
	
	for(int i=0;i<n;i++)
    	{
    			//псевдослучайно заплнить
                a[i]=rand()-rand();
    		
    		cout<<a[i]<<" ";
    	};
    	
	cout<<endl;
	
	// сортировка по возрастанию
	my_sortArray (a, n);
	
	//вывод
		for(int i=0;i<n;i++)
        	{
        		
        		cout<<a[i]<<" ";
        	}
        	
	
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}
Посмотри другие алгоритмы сортировки и попробуй напиши самостоятельно.
vvmcpp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь в решении задачи! Elusive Devil Помощь студентам 2 22.03.2009 16:17
Програма на Pascal: нахождение минимума с помощью процедуры в 2мерном массиве. Нужна помощь. Lopirion Помощь студентам 2 28.12.2008 21:23
2 задачи. Нужна помощь Memphis Паскаль, Turbo Pascal, PascalABC.NET 11 16.12.2008 22:46
Работа с MS Word с помощью VBA. Нужна помощь. ereality Microsoft Office Word 5 28.05.2008 18:50