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

Отсортировать стуктуры по автору а внутри каждого автора- по году издания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Доступ к статической переменной-члену http://www.cyberforum.ru/cpp-beginners/thread206447.html
Всем доброго время суток задали написать программу, в которой доступ к статической переменной-члену осуществляется с помощью статической функции-члена. Сделать статическую переменную-член закрытой,...
C++ Строки Здрасьте, мне препод по программированию задал написать задачу с функцией join , которая будет соединять две строки, которые надо будет ввести вручную. Нельзя использовать библиотеку стринг, только... http://www.cyberforum.ru/cpp-beginners/thread206443.html
C++ Массивы
Здравствуйте,у меня сессия на носу,завтра зачёт по матану,а ещё по программированию требуют сдать лабораторные,помогите пожалуйста с некоторыми несложными заданиями по массивам.(нужно сделать до...
C++ Напишите функцию, которая переворачивает строку
1) Напишите функцию, которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний сим-волы, затем следующие и т.д. Строка должна передаваться в...
C++ Метод базовой точки http://www.cyberforum.ru/cpp-beginners/thread206435.html
Помогите пожалуйста, нужно написать программку на С++ для курсовой, ничего не понимаю в программировании. Буду очень благодарен!! Очень надо, пропадаю!! Задача: Написать программу, которая...
C++ Удалить из массива «лишние» элементы ПОМОГИТЕ,ПОЖАЛУЙСТА... Дан числовой массив размера N. Удалить из массива «лишние» элементы, так чтобы оставшиеся образовывали возрастающую последовательность. подробнее

Показать сообщение отдельно
CHUCKe
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 25

Отсортировать стуктуры по автору а внутри каждого автора- по году издания - C++

08.12.2010, 21:32. Просмотров 519. Ответов 5
Метки (Все метки)

надо отсортировать по автору а внутри каждого автора- по году издания.
у меня почему-то иероглифы выводит.
я вообщем проверяю правильность ввода и там-же значения присваиваю
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
 
typedef struct
{
    char name[15];
    char book[20];
    int god;
    int kolvo;
}litera;
 
int check_small_1(char *str)
{
     cout<<strlen(str)<<endl;
     for(int i=0;i<strlen(str);i++)
      if (isdigit(str[i]))
        return 0;
     return 1;
}
 
int check_small_2(char *str)
{
    cout<<strlen(str)<<endl;
    for(int i=0;i<strlen(str);i++)
     if (isalpha(str[i]))
       return 0;
    return 1;
}
 
int check(char *str,litera *elem)
{
   char nametemp[15];
   int j=0,i=0;
   while(str[i]!=' '&&i<strlen(str))
   {
      nametemp[i]=str[i];
      i++;
   }
   nametemp[i]=0;
   if (i==strlen(str))
     return  0;
   if (!check_small_1(nametemp))
     return 0;
     
   j=i;
   i=0;
   j++;
   char nazvtemp[20];
   while(str[j]!=' '&&j<strlen(str))
   {
     nazvtemp[i]=str[j];
     i++;
     j++;
   }
   nazvtemp[i]=0;
   if (j==strlen(str))
     return 0;
   if (!check_small_1(nazvtemp))
     return 0;
     
   i=0;
   j++;
   char godtemp[4]; 
   while(str[j]!=' '&&j<strlen(str))
   {
     godtemp[i]=str[j];
     i++;
     j++;
   }
   godtemp[i]=0;
   if (j==strlen(str))
     return 0;
   if (!check_small_2(godtemp))
     return 0;
   char kolvotemp[3];
   
   i=0;
   j++;
   while(j<strlen(str))
   {
     kolvotemp[i]=str[j];
     i++;
     j++;
   }
   kolvotemp[i]=0;
   if (!check_small_2(kolvotemp))
      return 0;
   
   strcpy(elem->name,nametemp);
   strcpy(elem->book,nazvtemp);
   elem->god=atoi(godtemp);
   elem->kolvo=atoi(kolvotemp);
   return 1;
   
     
     
};
 
    
 
//ïåðåä ïåðâûì ñëîâîì Г*ГҐГІ ïðîáåëГ*
 
int main()
{
    int delta;
    cout<<"Kol-vo elementoff"<<endl;
    cin>>delta;
    litera arr[delta];
    
    char s[100];//äëÿ ГўГ±ГҐ ñòðîêè
    int k=0,i=0;
    
    for(int k=0;k<delta;k++)
    {
    litera temp;
    gets(s);
    if (s[0]==0) 
      break;
     int ch=check(s,&temp);
    if (ch==1)
     arr[i]=temp;
    else 
     cout<<"Incorrect!!!\n"<<endl;     
    }
    
    //óïîðÿäî÷èòü ГґГ*ìèëèè ГЇГ® Г*ëôГ*ГўГЁГІГі
    for(int i=delta-1;i>=2;i--)
     for(int j=2;j<=i;j++)
      if (strcmp(arr[j].name,arr[j-1].name)>0)
       { 
        litera x=arr[j];
        arr[j]=arr[j-1];
        arr[j-1]=x;
       }
    
    //ñîðòèðîâêГ* "ïóçûðüêîì" ГЇГ® ãîäГ*Г¬.
    for(i=delta-1;i>=2;i--)
      for(int j=2;j<=i;j++)
          if ((arr[j].god > arr[j - 1].god)&&(arr[j].name==arr[j-1].name))
          {
              litera x = arr[j];
              arr[j] = arr[j - 1];
              arr[j - 1] = x;
          }
    
    cout<<"Data"<<endl;
    for(i=0;i<delta;i++)
     cout<<arr[i].name<<" "<<arr[i].book<<" "<<arr[i].god<<" "<<arr[i].kolvo<<endl;
     
     
     return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru