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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2013, 01:33   #1
burbonjkeee
 
Регистрация: 29.12.2013
Сообщений: 5
Вопрос Даны целые числа a1, … ,an, k. Если в последовательности a1, … ,an нет ни одного члена со значением k, то все члены ... (на С/С++

Задание :
Даны целые числа a1, … ,an, k. Если в последовательности a1, … ,an нет ни одного члена со значением k, то все члены этой последовательности заменить на значение k.

Код :
Код:
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;

void func (int n, int masiv[], int k)
{
	bool flag=false;
	for (int i=0; i<n; i++)
	{
		if (masiv[i]==k) 
		{
			bool flag=true;
			break;
		}
	}

	if (flag=false)

		for (int i=0; i<n; i++)
	{
		masiv[i]=k;
	}

		cout<<masiv;
	
}

void main (void)
{

	int n, k;
	int mas[50];

	cout<<"enter N";
	cin>>n;

	cout<<"enter k";
	cin>>k;

	while (mas[i]!=n)
		mas[i]=++i;

	func(n, mas, k);
	
}
Выводит не массив, который получился, а некую цифру в Шестнадцатеричном виде (0021FDA4 или другую)

Мне нужно чтобы программа вывела на экран массив (тоесть если k=5, чтобы выводился массив чисел 5)

Пожалуйста помогите !

Последний раз редактировалось Stilet; 29.12.2013 в 11:27.
burbonjkeee вне форума Ответить с цитированием
Старый 29.12.2013, 01:37   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Наверное, выводит адрес.
cout наверное, понимает имя массива, как указатель, а не как его содержимое.
type_Oleg вне форума Ответить с цитированием
Старый 29.12.2013, 12:52   #3
burbonjkeee
 
Регистрация: 29.12.2013
Сообщений: 5
По умолчанию

Понятно. Так все же, как мне исправить данную ошибку ? Мне нужно что бы на экран выводился сам массив
burbonjkeee вне форума Ответить с цитированием
Старый 29.12.2013, 17:29   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

burbonjkeee, нужно выводить каждый элемент массива в цикле.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 29.12.2013, 17:34   #5
burbonjkeee
 
Регистрация: 29.12.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
burbonjkeee, нужно выводить каждый элемент массива в цикле.
Преобразил код :
Код:
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;

int i;

void func (int n, int masiv[], int k)
{
	bool flag=false;
	for (int i=0; i<n; i++)
	{
		if (masiv[i]==k) 
		{
			bool flag=true;
			break;
		}
	}

	if (flag=false)

		for (int i=0; i<n; i++)
	{
		masiv[i]=k;
	}
	
}

void main (void)
{

	int n, k;
	int mas[50];

	cout<<"enter N";
	cin>>n;

	cout<<"enter k";
	cin>>k;

	for (int i=1; i<=n; i++)
	{
		mas[i]=i;
		cout<<" ";
	}

	func(n, mas, k);

	for (int i=0; i<n; i++)
		cout<<mas[i];
	
}
начинает выдавать какую то несуразицу : ( -82157162645282755262531232455163427 31) что то вроде этого, я думаю, может я не правильно делаю что-то с массивом в main ? Функцию вроде как написал верно.

Последний раз редактировалось burbonjkeee; 29.12.2013 в 17:48.
burbonjkeee вне форума Ответить с цитированием
Старый 29.12.2013, 21:24   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

cout << mas[i] << ' ';
И нумерация в массиве с 0, а не с 1.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 29.12.2013, 22:16   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Код:
#include <iostream>

using namespace std;

void func(int mas[], int k, int n)
{
	bool flag = false;
	for(int i = 0; i < n; i++) {
		if(mas[i] == k) {
			flag = true;
			break;
		}
	}

	if(!flag) {
		for(int i = 0; i < n; i++)
			mas[i] = k;
	}
}

int main()
{
	int n, k;
	int *mas = NULL;

	cout << " Enter N: ";	cin >> n;
	cout << " Enter k: ";	cin >> k;

	mas = new int[n];
	for(int i = 0; i < n; i++) 
		mas[i] = i;

	func(mas, k, n);

	for(int i = 0; i < n; i++)
		cout << " " << mas[i];
	cout << endl;

	delete [] mas;
	return 0;	
}
Проверяйте.... Будут вопросы, пишите.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 29.12.2013, 22:55   #8
burbonjkeee
 
Регистрация: 29.12.2013
Сообщений: 5
По умолчанию

Большое спасибо, код работает, я понял свои ошибки ! Теперь главное преподу объяснить
burbonjkeee вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
,Даны целые числа K и L. Если числа не равны, то заменить меньшее из них остатком от деления большего на меньшее, а если рав Proskurina Помощь студентам 3 25.03.2013 20:51
Множества: Даны целые числа а1,.....,Аn. Вывести на печать сообщение - имеется ли в последовательности х повторяющиеся числа lialia Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 21:11
Даны целые числа a, n, x1,x2,...,xn.Определить, каким по счету идет в последовательности x1,...,xn член, равный a. Если такого чле Михаил77 Помощь студентам 1 17.12.2012 18:35
Даны целые числа р и q. Получить все делители числа q, взаимно простые c г. Владан Паскаль, Turbo Pascal, PascalABC.NET 2 03.12.2012 23:39
Даны натуральные числа n, q1, …, qn. Найти те члены qi последовательности q1, …, qn, которые bad9 Помощь студентам 0 08.06.2012 12:28