Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Описать структуру с именем MARSH - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шаблоны функций http://www.cyberforum.ru/cpp-beginners/thread252115.html
Привет всем, я новичок в С++, хо4у изучать этот язык, буду делать через VS 2008 прошу вас придумать какие нибудь не сильно сложные задачки для меня на темы: 1) Шаблоны функций 2)Что нибудь с...
C++ Инициализация массива int ** mas, n; cout << "Введите порядок треугольника паскаля: " << endl; cin >> n; mas = new int * ; for (int i = 0; i < n; i++) mas = new int ; выдает ошибку вроде нужна константа, не... http://www.cyberforum.ru/cpp-beginners/thread252107.html
где то не доглядел C++
почему программа работает только до первого пробела?// programma kura saskaita ciparus simbolu virkne #include "stdafx.h" #include <iostream> #include <conio.h> #include <string> using namespace...
C++ Сравнить строковые массивы
void Search() { char fam ; cout << "\nВведите фамилию хозяина собаки "; SetConsoleCP(1251); //Сменили кодировку консоли для ввода cin >> fam; SetConsoleCP(cp); //Восстановили...
C++ Закрасить текст определённым цветом в консоли http://www.cyberforum.ru/cpp-beginners/thread252052.html
Привет, подскажыте пожалуста как можно закрасить текст, при чем мне нужно например штобы 1 рядок был одним кольором второй вторим. заранне благодарен!
C++ Разработать функцию Разработать функцию, которая по одному стеку строит два новых: Stack1 из положительных элементов и Stack2.с++ добавление/удаление и создание стека через отдельные ф-ции. короче как стеки новые... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
19.04.2011, 23:32
На мой взгляд, код с использованием STL проще приведенного в первом посту и гораздо проще нижеприведенного.

По просьбам ленящихся, код без STL, на C. Используется односвязный список с сохранением упорядоченности записей при вставке.

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 <stdlib.h>
#include <string.h>
#include <time.h>
 
struct Route {
  int   id;
  char *begin;
  char *end;
  struct Route *next;
};
 
struct OrderedList {
  struct Route *start;
  size_t size;
};
 
void ClearOrderedList(struct OrderedList *route_list) {
  while (route_list->start != NULL) {
    struct Route *temporary = route_list->start->next;
    free(route_list->start->begin);
    free(route_list->start->end);
    route_list->start = temporary;
    --route_list->size;
  }
}
 
void AddRouteToOrderedList(struct OrderedList *route_list, int route_id,
                           const char *route_begin, const char *route_end) {
  struct Route *new_route = (struct Route*)malloc(sizeof(struct Route));
  new_route->id = route_id;
  new_route->begin = strcpy((char*)malloc(strlen(route_begin) + 1),
                            route_begin);
  new_route->end = strcpy((char*)malloc(strlen(route_end) + 1), route_end);
  new_route->next = NULL;
  if (route_list->start == NULL || route_list->start->id >= new_route->id) {
    new_route->next = route_list->start;
    route_list->start = new_route;
  } else {
    struct Route *previous_route = route_list->start;
    new_route->next = previous_route->next;
    while (new_route->next != NULL && new_route->id > new_route->next->id) {
      previous_route = new_route->next;
      new_route->next = new_route->next->next;
    }
    previous_route->next = new_route;
  }
  ++route_list->size;
}
 
char *NewRandomString(size_t min_size, size_t max_size) {
  size_t size = rand() % (max_size - min_size + 1) + min_size;
  size_t i;
  char *result = (char*)malloc(size + 1);
  result[size] = '\0';
  for (i = 0; i < size; ++i)
    result[i] = rand() % ('z'-'a' + 1) + 'a';
  result[0] += 'A' - 'a';
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  struct OrderedList routes = { NULL, 0 };
  size_t i;
  for (i = 0; i < 20; ++i)
    AddRouteToOrderedList(&routes, rand() % 100, NewRandomString(2, 3),
                                                 NewRandomString(2, 3));
  
  struct Route *route = routes.start;
  for (route = routes.start; route != NULL; route = route->next)
      printf("ID: %d, %s -> %s.\n", route->id, route->begin, route->end);
  printf("\n");
 
  size_t buffer_size = 2048;
  char *buffer = (char*)malloc(buffer_size);
  fgets(buffer, buffer_size, stdin);
  buffer[strlen(buffer) - 1] = '\0';
 
  int route_found = 0;
  for (route = routes.start; route != NULL; route = route->next)
    if (strcmp(route->begin, buffer) == 0 ||
        strcmp(route->end, buffer) == 0) {
      printf("ID: %d, %s -> %s.\n", route->id, route->begin, route->end);
      route_found = 1;
    }
 
  if (!route_found)
    printf("No such routes found.\n");
 
  free(buffer);
 
  ClearOrderedList(&routes);
  return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru