Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/56: Рейтинг темы: голосов - 56, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 17
1

Создать список из целых чисел, отсортировать по возрастанию и вывести на экран

30.05.2010, 11:47. Показов 10325. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите плз написать программу на си:
программно создать список из целых чисел, отсортировать по возрастанию и вывести на экран.
одна задача от зачета отделяет, помогите плз =) заранее спасибо...

Добавлено через 42 минуты
неужели никто не знает, как сделать?

Добавлено через 1 час 7 минут
народ, помогите плз...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2010, 11:47
Ответы с готовыми решениями:

Создать матрицу, вывести ее на экран и отсортировать по возрастанию строку с наименьшей суммой элементов (Pascal -> C)
Нужно перевести этот код: uses crt; const m=3; n=4; type mtr=array of integer;...

Создать стек из случайных целых чисел и отсортировать элементы по возрастанию (убыванию)
Здраствуйте!Можете помочь с заданием???Дана программа: #include <iostream> #include <malloc.h>...

Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран
всем привет.вот пытаюсь заполнить массив рандом из 20 чисел,после мне его нужно отсортировать по...

Clojure Отсортировать список целых по возрастанию суммы делителей
Делителями числа считаются собственные делители и единица. Другими словами, у совершенных чисел...

13
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
30.05.2010, 12:41 2
Цитата Сообщение от ололо Посмотреть сообщение
неужели никто не знает, как сделать?
Не-а, даже не догадываемся!

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int cmp_func(const void * a, const void * b){
    return *(int*)a - *(int*)b;
}
 
int main(void){
    int size, *arr, i;
    
    srand(time(NULL));
    printf("Number of elements: ");
    if ( scanf("%d", &size) != 1 || size < 1 ){
        fprintf(stderr, "Wrong number!\n");
        exit(EXIT_FAILURE);
    }
    if ( ( arr = (int*)calloc(size, sizeof(int)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
    for ( i = 0; i < size; ++i )
        arr[i] = rand() % 100;
    printf("Unsorted:\n");
    for ( i = 0; i < size; ++i )
        printf("%02d ", arr[i]);
    qsort(arr, size, sizeof(int), cmp_func);
    printf("\nSorted:\n");
    for ( i = 0; i < size; ++i )
        printf("%02d ", arr[i]);
    printf("\n");
    
    free(arr);
    exit(EXIT_SUCCESS);
}
1
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 17
30.05.2010, 14:27  [ТС] 3
спасибо конечно, но в том-то все и дело, что именно список, а не массив...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
30.05.2010, 15:30 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от ололо Посмотреть сообщение
именно список
ну список - так список...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef struct NODE {
    int value;
    struct NODE * next;
} node_t;
 
node_t * new_node(int val, node_t * last){
    node_t * n;
    if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return NULL;
    n->value = val;
    n->next = NULL;
    if ( last )
        last->next = n;
    return n;
}
 
node_t * min_node(node_t * n){
    node_t * minNode = n;
    while ( n = n->next )
        if ( n->value < minNode->value )
            minNode = n;
    return minNode;
}
 
void swap_vals(node_t * a, node_t * b){
    int val;
    val = a->value;
    a->value = b->value;
    b->value = val;
}
 
void sort_nodes(node_t * n){
    node_t * minNode;
    while ( n->next ){
        if ( ( minNode = min_node(n) ) != n )
            swap_vals(n, minNode);
        n = n->next;
    }
}
 
void print_nodes(const node_t * n){
    while ( n ){
        printf("%02d ", n->value);
        n = n->next;
    }
    printf("\n");
}
 
void delete_nodes(node_t * n){
    node_t * t;
    while ( n ){
        t = n->next;
        free(n);
        n = t;
    }
}
 
int main(void){
    node_t * first, * last;
    int needed;
 
    first = last = NULL;
    printf("Nodes needed: ");
    if ( scanf("%d", &needed) != 1 || needed < 1 ){
        fprintf(stderr, "Wrong number!\n");
        exit(EXIT_FAILURE);
    }
 
    srand(time(NULL));
    while ( needed-- ){
        if ( ( last = new_node(rand() % 100, last) ) == NULL ){
            fprintf(stderr, "Can't create a new node!\n");
            exit(EXIT_FAILURE);
        }
        if ( ! first )
            first = last;
    }
 
    if ( ! first ){
        fprintf(stderr, "Shit happens!\n");
        exit(EXIT_FAILURE);
    }
 
    printf("Unsorted:\n");
    print_nodes(first);
 
    sort_nodes(first);
 
    printf("Sorted:\n");
    print_nodes(first);
 
    delete_nodes(first);
    exit(EXIT_SUCCESS);
}
1
0 / 0 / 2
Регистрация: 30.05.2010
Сообщений: 17
30.05.2010, 15:36 5
easybudda, а через NODE это разве не деревья?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
30.05.2010, 15:38 6
Jelum, NODE - это просто имя структуры. Замените везде на BRICK - стена получится...
1
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 17
30.05.2010, 15:39  [ТС] 7
easybudda, спс... только хотелось бы узнать, по какому принципу формируется не сортированный список и как образуются целые числа в программе
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
30.05.2010, 15:43 8
Цитата Сообщение от ололо Посмотреть сообщение
по какому принципу формируется не сортированный список и как образуются целые числа в прграмме
Да практически с потолка берутся
Цитата Сообщение от easybudda Посмотреть сообщение
last = new_node(rand() % 100, last)
1
2 / 2 / 1
Регистрация: 08.09.2010
Сообщений: 10
10.09.2010, 16:03 9
Здравствуйте. Я так понял здесь сортировка происходит просто обменом значений. Мне нужно что бы сортировка происходила обменом указателей. т.е. что бы не просто обменять значения одного эл-та со значением другого, а обменять эти элементы местами в списке.

Может кто-нибудь помочь?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
10.09.2010, 16:25 10
Tim0xAA, измени тело функции swap_vals()
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
10.09.2010, 18:22 11
Цитата Сообщение от niXman Посмотреть сообщение
измени тело функции swap_vals()
... да и список лучше двусвязным сделать
0
2 / 2 / 1
Регистрация: 08.09.2010
Сообщений: 10
10.09.2010, 18:43 12
Нужно именно с односвязным сделать. Если бы можно было сделать двусвязный я бы не просил помощи в сортировке =)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
10.09.2010, 18:46 13
Цитата Сообщение от Tim0xAA Посмотреть сообщение
Если бы можно было сделать двусвязный я бы не просил помощи в сортировке =)
Да ну?! Если знаете, как менять указатели в двусвязном списке, какие с односвязным проблемы? Просто лишние телодвижения с поиском предыдущих обмениваемым элементов...
0
2 / 2 / 1
Регистрация: 08.09.2010
Сообщений: 10
10.09.2010, 21:36 14
Почти сделал, как возникла другая проблема.
Сортирую пузырьком, как в данном случае сделать внешний цикл? о кол-ве эл известно только что их четное кол-во.
Подкиньте идею.
вот код того что уже есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>
typedef struct list {
int number;
struct list *next;
} LIST;
 
LIST *read_list(LIST *lst)
{
  LIST *p;
  FILE *f;
  f=fopen("rgzin.txt","r");
  if (!feof(f))
  {
    lst=(LIST *)malloc(sizeof(LIST));
    p=lst;
    while (1)
    {
      fscanf(f,"%d",&p->number);
      if (!feof(f))
      {
    p->next=(LIST *)malloc(sizeof(LIST));
    p=p->next;
      } else break;
    }
    p->next=NULL;
  }
  else printf("Файл пустой\n");
  fclose(f);
  return lst;
}
 
LIST *Sort(LIST *lst)
{
    LIST *p1,*p2,*prev;
    
// как здесь организовать внешний цикл для сортировки?
        p1 = lst;
        while (p1 -> next)
        {
            p2 = p1 -> next;
            if ( (p1 -> number) > (p2 ->number) )
            {
                if (p1 == lst)
                {
                    p1 -> next = p2 -> next;
                    p2 -> next = p1;
                    lst = p2;
                    prev = p2;
                }
                else
                {
                    p1 -> next = p2 -> next;
                    p2 -> next = p1;
                    prev -> next = p2;
                    prev = p2;
                }
            }
            else
            {
                p1 = p1 -> next;
                prev = prev -> next;
            }
        }
        
    return lst;
}
 
 
void write(LIST *lst)
{
  FILE *f;
  LIST *p1=lst, *p2;
  f=fopen("brgz.txt","w");
  while (p1)
  {
    fprintf(f,"%d ",p1->number);
    p2=p1;
    p1=p1->next;
    free(p2);
  }
  fclose(f);
}
 
void main()
{
  clrscr();
  LIST *lst=NULL;
  lst=read_list(lst);
  lst=Sort(lst);
  write(lst);
  getch();
}
0
10.09.2010, 21:36
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.09.2010, 21:36
Помогаю со студенческими работами здесь

Создать и вывести на экран одномерный массив целых чисел
написать программу, которая будет создавать и выводить на экран одномерный массив целых чисел

Отсортировать по возрастанию массив целых чисел
Помогите пожалуйста срочно нужно но сам не успеваю. Задание : определить на каком месте стоит...

Создать файл из N целых чисел и вывести его содержимое на экран
1. Создать файл, состоящий из N целых чисел. Вывести содержимое этого файла на экран. 2. Найти...

Отсортировать столбцы массива целых чисел по возрастанию
Отсортировать столбцы массива целых чисел по возрастанию. Сортировка включением. Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru