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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2010, 20:53   #1
YoungTeacher
 
Регистрация: 05.09.2010
Сообщений: 6
По умолчанию Найти Ощибку

Добрый вечер.Начал изучать язык С , изучаю пару дней . Изучал в универе основы программирования в своем псевдокоде так что проблемы с прописью . Надо рассортировать Вектор в нарастающей форме
void main()
{
int Array[100], i, n;


printf("Vvedite razmer vectora: "); scanf("%d", &n);

printf("\n");

for (i = 0; i < n; i++)
{
printf("> "); scanf("%d", &Array[i]);
}

printf("\n");

for (i = 0; i < n; i++)
{
printf("[%d]", Array[i]);
}

int x,min,p_min;

for ( i = 1; i < n; i++)
{
min = Array[i];
p_min = i ; //это позиция числа в векторе
for (int j = i + 1 ; j < n; j++)
{
if (Array[i] > min)
{
min = Array[j];
p_min = j;
}
}
}

Array[p_min] = Array[i];
Array[i] = i;

printf("\n\n");

for (i = 0; i < n; i++)
{
printf("[%d]", Array[i]);
}



getch();
}
YoungTeacher вне форума Ответить с цитированием
Старый 05.09.2010, 22:00   #2
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

весь функционал работы с коллекциями уже давно написан. юзай стандартную библиотеку
sashonk вне форума Ответить с цитированием
Старый 05.09.2010, 22:29   #3
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

массив а не вектор
Код:
min = Array[i];
зачем тебе минимальный элемент...
Код:
for ( i = 1; i < n; i++)
-
Код:
for ( i = 0; i < n; i++)
Код:
if (Array[i] > min)
-
Код:
if (Array[j] > min)
Код:
Array[i] = i;
?
вот так можно отсортировать
Код:
	bool ctl = true;
	while (ctl)
	{
		ctl = false;
		for (int i = 0; i < n - 1; ++i) {
			if (Array[i] > Array[i + 1]) {
				Array[i] ^= Array[i + 1];
				Array[i + 1] ^= Array[i];
				Array[i] ^= Array[i + 1];
				ctl = true;
			}
		}
	}
include <Qt>
sever-42 вне форума Ответить с цитированием
Старый 06.09.2010, 01:12   #4
YoungTeacher
 
Регистрация: 05.09.2010
Сообщений: 6
По умолчанию

спасиб за помощь, я хотел несколько вариантов сортировки сдеать , и я знаю что этот способ не очень хороший , просто для общего развития и не могу закончить))) пробовал через buble sort получилось а этот метод увы_)) спасибо
YoungTeacher вне форума Ответить с цитированием
Старый 11.09.2010, 02:31   #5
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Код:
bool ctl = true;
	while (ctl)
	{
		ctl = false;
		for (int i = 0; i < n - 1; ++i) {
			if (Array[i] > Array[i + 1]) {
				Array[i] ^= Array[i + 1];
				Array[i + 1] ^= Array[i];
				Array[i] ^= Array[i + 1];
				ctl = true;
			}
		}
	}
Либо вариант по проще, на мой взгляд.

Код:
for (int i = 0; i < n; i++)
{
    for (int j = i; i < n; i++)
    {
        if (Array[i] < Array[j + 1])
        {
             int Temp = Array[j + 1];
             Array[j + 1] = Array[i];
             Array[i] = Temp;
        }
    }
}
p.s. Автору темы, на будущее используй тег "code"
p.s.1. Отсчет массива начинается с 0
p.s.2. Немного изменил твой код, теперь сортир работает

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

int _tmain(int argc, _TCHAR* argv[])
{
	int Array[100], i, n;

	printf("Enter array size: "); scanf("%d", &n); 
	
	printf("\n");

	for (i = 0; i < n; i++)
	{ printf("[%d]: ", i + 1); scanf("%d", &Array[i]); }

	printf("\n");

	for (i = 0; i < n; i++)
	{ printf("[%d]", Array[i]); }

	int min, Temp;	

	for (i = 0; i < n; i++)
	{
		min = Array[i];

		for (int j = i; j < n; j++)
		{
			if (Array[j] < min)
			{
				min = Array[j]; Temp = Array[i]; Array[i] = min; Array[j] = Temp;
			}
		}
	}

	printf("\n");

	for (i = 0; i < n; i++)
	{ printf("[%d]", Array[i]); }

	printf("\n\n"); system("PAUSE"); return 0;
}
Думаю идею твоего алгоритма я понял правильно

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти ошибку sergio11 Паскаль, Turbo Pascal, PascalABC.NET 2 19.05.2010 01:22
не могу найти СИ alex(21) Софт 19 01.11.2009 21:47
найти ошибку rUs_LAN Общие вопросы C/C++ 8 14.05.2009 12:02
исправить в задаче ощибку при подсчете суммы ряда пыхонин филипп Помощь студентам 1 05.01.2009 13:12
Найти и обезвредить))))) 13th Свободное общение 4 02.01.2009 13:36