|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Последовательность чисел |
|
C/C++ - Последовательность чисел
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Помогите пожалуйста!
Есть программа, которая реализует работу с последовательностью чисел. Вводим 10 чисел - она формирует их по возростанию. Но нужно ещё, кроме этого составить новую последовательность, выкинув из неё самое минимальное и самое максимальное число. Как это сделать? #include <stdio.h> #include <conio.h> #include <stdlib.h> void main(void) { int n[10]; int i; float min, max; float*a; printf ("\n 10:"); scanf("%d" , &n); a=(float*)calloc(n,sizeof(float)); for(i=0; i<n;i++) { scanf("%f" ,&a[i]); } min=a[0]; max=a[0]; for(i=1; i<n;i++) } if(min>a[i]) min=a[i]; if(max<a[i]) max=a[i]; } printf ("min=%.1f" ,min); printf ("max=%1f" ,max); getch (); free (a); } Заранее спасибо! |
|
Отправлено: 11:10, 28-12-2007 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать программа выполняет несколько иную задачу
|
Отправлено: 18:33, 28-12-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Что-то чепуха написана у вас в коде
Делается это просто в два шага: 1. Сортируется. 2. Убирается первый и последний элементы. #include <stdio.h> #include <conio.h> #define N 10 void sort(int in[], int a=0, int b=N){ int i,j,mode; if (a>=b) return; for (i=a,j=b,mode=1;i<j;mode>0?j--:i++) if (in[i] > in[j]) { in[i]^=in[j]^=in[i]^=in[j]; mode=-mode; } sort(in,a,i-1); sort(in,i+1,b); } int main() { int i,*x=new int[N]; for (i=0;i<N;i++) scanf("%d",&x[i]); sort(x); //сортируем for (i=1;i<N-1;i++) { //убираем первый и последний элементы x[i-1]=x[i]; printf("%d ",x[i-1]); } getch(); return 0; } |
Отправлено: 10:59, 31-12-2007 | #3 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать 5pliT,
Цитата 5pliT:
|
|
------- Отправлено: 17:56, 31-12-2007 | #4 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Это алгоритм обмена значений переменных.
Примерно тоже самое: int temp=in[i]; in[i]=in[j]; in[j]=temp; |
|
Отправлено: 12:10, 01-01-2008 | #5 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 5pliT:
Можешь подробнее объяснить?! Принцип пузырьковой сортировки |
|
------- Последний раз редактировалось Drongo, 01-01-2008 в 18:11. Причина: Добавил вопрос Отправлено: 18:09, 01-01-2008 | #6 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Здесь нет третей переменной, поэтому я и использовал этот алгоритм.
Можно расписать его как последовательность операций: in[i]=in[i]^in[j]; in[j]=in[j]^in[i]; in[i]=in[i]^in[j]; ^ - это xor (математики называют эту операцию "исключающее ИЛИ" или "сумма по модулю 2" или "кольцевая сумма") 0^0=0 0^1=1 1^0=1 1^1=0 например a=5,b=7; a=101 b=111 a=a xor b a=101 xor 111=010=2 b=b xor a b=111 xor 010=101=5=a (первоначальное) a=a xor b a=010 xor 101=111=7=b (первоначальное) Алгоритм пузырьковой сортировки заключается в последовательном (начиная с разных концов массива) сравнении всех элементов друг с другом. Если нужная последовательность не сохраняется, то элементы меняются местами. Здесь я использовал рекурсивный алгоритм быстрой сортировки. Он заключается в последовательном выборе элемента (обычно который называют медианой или опорным элементом). Затем элементы упорядочиваются относительно него, тоесть все меньшие в одну сторону, все большие в другую. Затем для каждой из частей (левой и правой) рекурсивно запускается тотже алгоритм. Тоесть опять выбирается медиана и массив разделяется на две части. Алгоритм этот достаточно быстрый и запись его на Си очень локанична. |
Последний раз редактировалось 5pliT, 02-01-2008 в 07:57. Причина: Добавлено по алгоритму обмена, исправлены ошибки Отправлено: 07:48, 02-01-2008 | #7 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать 5pliT,
Я почему спрашивал, просто эту операцию ещё не изучал Цитата 5pliT:
|
|
------- Отправлено: 20:54, 02-01-2008 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Assm - Сложение двух чисел | Rebel666 | Программирование и базы данных | 8 | 22-04-2012 17:30 | |
Генератор случайных чисел | Murrey | Хочу все знать | 3 | 22-08-2006 13:00 | |
сортировка чисел | slaine | Вебмастеру | 12 | 18-02-2006 20:17 | |
Генерирование случайны чисел в С++ | Belka007 | Программирование и базы данных | 12 | 23-11-2003 22:19 |
|