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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 23:30   #1
Annneet
 
Аватар для Annneet
 
Регистрация: 14.10.2011
Сообщений: 9
По умолчанию Как решить такую задачу с масивами в С++?

Объявить нецелочисленное массив S [18]. Используя условие и безусловный переход создать цикл для ввода значений элементов массива с клавиатуры. Поменять местами минимальный элемент в массиве и первый. Используя цикл while (..){...}, вывести полученный массив на экран в 2 столбца.
Annneet вне форума Ответить с цитированием
Старый 15.10.2011, 11:14   #2
Exoo
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 53
Радость

как то так
принимаю конструктивную критику т.к. сам еще учусь писать на с++

Код:
#include <iostream>
#include <conio.h>
using namespace std;


void main()
{
	float m[18];
	int i= 0;

label1:// заполнение массива пользователем
	if (i<19) 
	{
		cout << "Enter " << i << "-th element array>";
		cin >> m[i];
		i++;
		goto label1;
	}//окончание заполнения массива
	
	//поиск минимально элемента в массиве
	float buf=m[0];
	int k; // для запоминания номера наименьшего элемента
	for (i=0;i<19;i++)
	{
		if (m[i]<m[0]) { m[0]=m[i]; k=i; } // запись меньшего элемента на первое место в массиве
	}
	m[k]=buf; // на место наименьшего элемента массива записываем первый

	// вывод массива
	i=0;
	while (i<9) 
	{
		cout << "m[" << i <<"]-" << m[i] << "\t" << "m["<< i+9 << "]-" << m[i+9] << endl;
		i++;
	}
	getch();
}
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.

Последний раз редактировалось Exoo; 15.10.2011 в 20:05. Причина: заменил единицы на нули в номерах массива
Exoo вне форума Ответить с цитированием
Старый 15.10.2011, 18:17   #3
FelixXXI
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 48
По умолчанию

Цитата:
принимаю конструктивную критику
Ну, принимай, раз желаешь:
1.
Объявил массив из 18 элементов: float m[18];
Первый элемент массива, как должно быть известно, имеет индекс 0, последний - 17.
В программе элементу массива m[0] ничего не присваивается, зато m[18], которого в природе не существует, получает некое значение.
2.
В задании сказано:
Код:
Поменять местами минимальный элемент в массиве и первый
Остальные элементы массива менять местами никто не говорил!
А в твоём коде весь массив будет перемешан.
FelixXXI вне форума Ответить с цитированием
Старый 15.10.2011, 18:59   #4
nanex
Новичок
Джуниор
 
Регистрация: 15.10.2011
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Exoo Посмотреть сообщение
как то так
принимаю конструктивную критику т.к. сам еще учусь писать на с++
Так наверное поиск.
Код:
	//поиск минимально элемента в массиве
	int k = 0; // для запоминания номера наименьшего элемента
	for (i=1;i<18;i++)
	{
		if (m[i]<m[k]) {k=i; } // сохранение индекса
	}

        if (k)
        {
	     float tmp = m[0];
	     m[0] = m[k];
             m[k] = tmp; // на место наименьшего элемента массива записываем первый
        }
Ну, и везде по остальному коду индексы исправить с учетом вышесказанного

Последний раз редактировалось nanex; 15.10.2011 в 19:02.
nanex вне форума Ответить с цитированием
Старый 15.10.2011, 19:31   #5
Exoo
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 53
По умолчанию

по первому пункту полностью согласен
а вот по второму нет. программа все правильно меняет местами
см скрин
да и вот с выводом в два столбца тоже накосячил
Изображения
Тип файла: jpg 1.jpg (67.8 Кб, 103 просмотров)
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.

Последний раз редактировалось Exoo; 15.10.2011 в 19:40.
Exoo вне форума Ответить с цитированием
Старый 15.10.2011, 19:32   #6
Exoo
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 53
По умолчанию

вот и вывод подправил )
Код:
// вывод массива
	i=0;
	while (i<9) 
	{
		cout << "m[" << i <<"]-" << m[i] << "\t" << "m["<< i+9 << "]-" << m[i+9] << endl;
		i++;
	}
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.

Последний раз редактировалось Exoo; 15.10.2011 в 20:03.
Exoo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить такую задачу: Haret Паскаль, Turbo Pascal, PascalABC.NET 12 20.12.2015 11:36
Как решить такую задачу? BBOBAHH Общие вопросы Delphi 5 22.10.2009 11:15
Можно ли решить такую задачу не используя условный оператор? Armorer Помощь студентам 5 15.10.2009 12:53