Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/222: Рейтинг темы: голосов - 222, средняя оценка - 4.50
3 / 3 / 0
Регистрация: 19.05.2012
Сообщений: 35

Описать структуру с именем ZNAK

19.05.2012, 07:49. Показов 45158. Ответов 39

Студворк — интернет-сервис помощи студентам
Прошу Вас помочь в написании программы, вообще не понимаю.

Описать структуру с именем ZNAK, содержащую следующие поля:
* фамилия, имя;
* знак Зодиака;
* дата рождения (массив из трех чисел).
Написать программу, выполняющую следующие действия:
* ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам рождения;
* вывод на экран информации о людях, родившихся под знаком, название которого введено с клавиатуры;
* если таких нет, выдать на дисплей соответствующее сообщение.
2
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2012, 07:49
Ответы с готовыми решениями:

Описать структуру с именем Znak
Здравствуйте. Помогите пожалуйста изменить сортировку а коде. С сортировки по фамилии на сортировку по дате. Заранее спасибо. Вот...

Описать структуру с именем ZNAK
вот код программы всё работает, тут ввод с клавиатуры а нужно чтобы из файла Добавлено через 32 секунды #include <fstream> ...

Описать структуру с именем ZNAK
Кто нибудь может написать такую задачу? Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак зодиака; дата...

39
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
10.12.2015, 21:55
Студворк — интернет-сервис помощи студентам
daslex, и вот с твоей сортировкой разные если месяца:
Миниатюры
Описать структуру с именем ZNAK  
2
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
10.12.2015, 22:49
Цитата Сообщение от gru74ik Посмотреть сообщение
как-то странно у тебя сортирует, честно говоря:
Вообще не сортирует.

исправлено.
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
#include <iostream>
#include "string.h"
 
const int N = 256;
 
//Описание структуры по заданию
struct Znak
{
    char
        FirstName[N],
        LastName[N],
        Zodiak[N];
    size_t DR[3];
}; //Массив структур в восемь элементов
 
        //Заполнение структуры
void init(Znak *A, int size)
{
    char S[N];
 
    for (int i = 0; i<size; i++)
    {
        std::cout << "FirstName: "; std::cin >> S;
        strcpy(A[i].FirstName, S);
        std::cout << "LastName: "; std::cin >> S;
        strcpy(A[i].LastName, S);
        std::cout << "Zodiak: "; std::cin >> S;
        strcpy(A[i].Zodiak, S);
        std::cout << "Date: " << '\n';
        for (int j = 0; j<3; j++)
            std::cin >> A[i].DR[j];
 
        std::cout << '\n';
    }
}
 
void sort_znak(Znak  *A, int size) {
    for (int i=1;i<size;i++)
    {
        for (int j=0;j<size-1;j++)
        {
                  if (A[j].DR[2] * 10000 + A[j].DR[1] * 100 + A[j].DR[0] > A[j+1].DR[2] * 10000 + A[j+1].DR[1] * 100 + A[j+1].DR[0]) std::swap(A[j],A[j+1]); //Если текущий элемент больше следующего, меняем их местами
        }
    }
}
 
//Вывод всей структуры на экран
void Show(Znak *A, int N)
{
    for (int i = 0; i<N; i++)
    {
        std::cout << A[i].FirstName << '\t';
        std::cout << A[i].LastName << '\t';
        std::cout << A[i].Zodiak << '\t';
        for (int j = 0; j<3; j++) std::cout << A[i].DR[j] << ".";
        std::cout << "\n";
    }
}
 
int main()
{
    const int N = 8;
    Znak A[N] = {
        "Oleg","Volkov","lion",{11, 8, 1982},
        "Igor","BObrov","lion",{11, 8, 1974},
        "Gleb","Vilnov","lion",{ 9, 8, 1982},
        "Vlad","Milnov","lion",{10, 8, 1956},
        "Lada","Orlova","lion",{10, 8, 1996},
        "Mira","Kotina","lion",{10, 8, 1948},
        "Olga","Botova","lion",{ 5, 8, 1988},
        "Inga","Letova","lion",{ 3, 8, 1990}
    } ;
 
    //Znak obj1[N];
   // init(obj1, N);
    Show(A, N);
    sort_znak(A, N);
    std::cout << "\n==============\n";
    Show(A, N);
    system("PAUSE");
}
Но лучше переводить дату в дни. И их сравнивать.
3
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
11.12.2015, 03:30
daslex, ну говоря про сортировку по году я имел ввиду сортировку массива, где сначала сортируется год, от меньшего к большему, потом месяц, потом день, что бы он сортировку сразу выводил на экран. Да... Похоже я не совсем правильно разъяснил, что мне нужно... Ну, а потом там будет такая формальность, как вывод фамилии по запросу. Как-то так...
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
11.12.2015, 06:59
ITALIANO, Насчет сортировки. Миллион ифов это глупо. Там где надо сортировать даты это не только глупо, но и достаточно тяжело. Намного проще сделать общую единицу измерения, ее сравнивать и от этого отталкиваться.

А тот способ, о котором говорю я и короче и проще для понимания. В случае сортировки дат, где указаны день, месяц и год, можно слегка подогнать под себя. Принимаешь одинь день за число 1, 1 месяц за число 32, тогда любую дату можно привести к одному знаменателю, где этот знамегатель есть днеисчисление.
В одном месяце 32 дня, в одном годе 32*12 дней. Теперь любую дату можно привести в наши дни.
18.09.2005 => 18 + 9*32 + 2005*32*12
11.05.2008 => 11 + 5*32 + 2008*32*12
А уже результаты количества дней сравнивать между собой и на этой основе делать сортировку.
Для сортировки даты д.м.г такой способ намного удобнее чем возиться так как это было сделано у gru74ik, о котором ты пишешь. Его и писать проще и понять очень легко, особенно если знать хотя бы одну сорировку на обычном массиве.
1
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
11.12.2015, 09:08
daslex, советую почитать про time.h и не путать новечков, ваш велосипед по подсчету уже давно реализован более умными людьми!
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
11.12.2015, 09:33
Цитата Сообщение от daslex Посмотреть сообщение
В одном месяце 32 дня
хмм...
Цитата Сообщение от daslex Посмотреть сообщение
в одном годе 32*12 дней
384 дня в году???
1
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
11.12.2015, 10:40
gru74ik, да он тут преследует другой мотив, он представляет некое число, как компанентные числа,тем самым пытаясь изобрести новую систему счисления дат. А Виль те кто задает задания далеко не дурак, он либо хочет тем самым научить писать много фактурную сортировку, или как раз изучения stl библиотеки, но не как не изобретения нового "псевдо рабочего" метода!

Добавлено через 6 минут
daslex, твой подход хоть и интересен, но это как (c^2=a^2+b^2) не работает при степени отличной от 2й!
Без очень большого усложнения, которое смогли доказать только 2 или 3 года назад

Добавлено через 1 минуту
Вообще (ИМХО ) Парады уже ввести переменную типа date, и уйти от интового представления даты!
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
11.12.2015, 17:15
Цитата Сообщение от gru74ik Посмотреть сообщение
384 дня в году???
В том летосчислении, которое нам навязано не столько дней.

Но там где не нужна разница дат, а нужно всего-лишь сравнение больше ли одна дата другой даты можно применить свое летосчисление. Сделать ровное число для минимальной единицы, сделать его без костылей и нужно чтобы операции с ним (такие как сумма, умножение) вмещались в результирующий тип данных (вроде мелочь, но переполнения нужно учитывать). Больше ничего и не надо. Может иметь место небольшой костыль для отрицательных дат, но и его сделать очень не сложно.

Цитата Сообщение от Mesteriis Посмотреть сообщение
но это как (c^2=a^2+b^2) не работает при степени отличной от 2й!
Она и при второй степени в премного подавляющем большинстве случаев не работает.

Mesteriis, Ну и каким должен быть год (какой должна быть дата) на платформе x86 при используемом типе size_t, чтобы показанный мною нубо прием дал сбой? (год считать положительным).
2
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
11.12.2015, 17:32
Цитата Сообщение от daslex Посмотреть сообщение
Она и при второй степени в премного подавляющем большинстве случаев не работает.
Прям плевок в сторону адептов евклидовом геометрии, уничтожил просто науку)

Цитата Сообщение от daslex Посмотреть сообщение
показанный мною нубо прием дал сбой?
Смотря какой сбой ты ждешь, для того что бы невозможно было трансформировать обратно, это потерять элемент даты, уже не разложишь обратно компоненту! А если ты про переполнение то да, тут все ок)) ну если конечно доживем до миллиардного года) А если про невозможность сравнения, правда лень сейчас анализ проводить, долго это, но держу пари, такие даты найдутся с вероятностью в 99%
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
11.12.2015, 20:44
Спора не будет.
Уважаемые модераторы, большая просьба удалить поток бессвязного бреда.
Три причины.
1. Отсутствие ответов на столь простые вопросы, где справится даже ученик средней школы начальных классов.
2. Тема ушла в сторону. Сейчас идет одно слюноплюйство. Слюнями брызжют в мой адрес. Может кому и приятно, мне однозначно - нет.
3. Мало кого из моих собеседников интересует человек задавший вопрос. И мало кого собственное образование. Нас только 2,5 человека. По необходимости мы сможем поговорить и между собой. По необходимости я отвечу спросившему сюда в тему.

Распинаться и что-то доказывать кому-либо, в случае его личной небрежности в формулировках формул и терминах математики, я абсолютно не намерен.
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
11.12.2015, 22:14
М-да... Вот ученые правильно говорят, что эмоции появляются при дефиците информации.
А std::lexicographical_compare кто будет изучать?
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
#include <algorithm>
#include <iostream>
#include <iterator>
///////////////////////////////////////////////////////////////////////////////
struct  T_date
{
    //-------------------------------------------------------------------------
    int     birth_date_[3];
    //-------------------------------------------------------------------------
    T_date()
    {
        birth_date_[0]  =   2000    + rand()    %   10;
        birth_date_[1]  =   2       + rand()    %   10;
        birth_date_[2]  =   20      + rand()    %   10;
    }
    //-------------------------------------------------------------------------
    bool    operator<   ( T_date    const   &   date )                  const
    {
        return  std::lexicographical_compare
                    (
                        std::begin  ( birth_date_       ),
                        std::end    ( birth_date_       ),
                        std::begin  ( date.birth_date_  ),
                        std::end    ( date.birth_date_  )
                    );
    }
    //-------------------------------------------------------------------------
    friend  std::ostream    &   operator<<
        (
            std::ostream            &   ostr,
            T_date          const   &   date
        )
    {
        std::copy
            (
                std::begin                      ( date.birth_date_  ),    
                std::end                        ( date.birth_date_  ),    
                std::ostream_iterator< int >    ( ostr, "."         )
            );
 
        return  ostr;
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
    T_date  dates[8];
 
    std::cout   <<  "До сортировки"
                <<  std::endl;
    std::copy
        (
            std::begin                          ( dates ),
            std::end                            ( dates ),
            std::ostream_iterator< T_date >     ( std::cout,    "\n" )
        );
 
    std::sort
        (
            std::begin  ( dates ),
            std::end    ( dates )
        );
 
    std::cout   <<  "\nПосле сортировки"
                <<  std::endl;
 
    std::copy
        (
            std::begin                          ( dates ),
            std::end                            ( dates ),
            std::ostream_iterator< T_date >     ( std::cout,    "\n" )
        );
 
    system("pause");
}
3
11.12.2015, 22:55

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
М-да...
Вы непонятно кому пишете.
Если мне. То посмотрите на год создания этой темы, когда я показывал пример и кому я его показывал.
Если не мне, то неужели Вы верите в то, что третье лицо, героически воскресившее эту тему, не умеющее работать с наипростейшим видом сортировки сумеет понять Ваш код?
Я писал исключительно для него (для юного археолога) и для таких как он, на их языке, невероятно понятным для них способом.

Это сообщение не требует ответа. Это риторическое сообщение.

0
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
14.12.2015, 03:21
Ответов хоть и много, но я не особо их понял... Мне нужно просто сделать сортировку по дате, хотя-бы с помощью пузырька...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template< class T >
void bubbleSort(T* arr, int size)
{
    T tmp;
 
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
А потом сделать так, что бы можно было бы из списка введённых людей, вывести (с клавиатуры) на экран фамилию того человека которого ты записал, или соответствующую ошибку...

Добавлено через 45 минут
Я что-то начал делать по примеру сортировки, но как-то не очень...
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
#include <iostream>
#include "string.h"
#include <stdlib.h>
using namespace std; 
const int N=256;
 
struct Znak
{
char
FirstName[N],
LastName[N],
Zodiak[N];
int DR[3];
}  A[8];  
 
void init(Znak *A,int size)
{
char S[N];
for (int i=0;i<size;i++)
{
cout<<"Введите имя: "; cin>>S;
strcpy(A[i].FirstName,S);
cout<<"Введите фамилию: "; cin>>S;
strcpy(A[i].LastName,S);
cout<<"Введите знак Зодиака: "; cin>>S;
strcpy(A[i].Zodiak,S);
cout<<"Введите день рождения: "<<'\n';
for (int j=0;j<3;j++)
cin>>A[i].DR[j]; 
cout<<'\n';
}
} 
 
void Show(Znak *A,int N)
{
    int tmp;
for (int i=0;i<N;i++)
{
cout<<A[i].FirstName<<'\t';
cout<<A[i].LastName<<'\t';
cout<<A[i].Zodiak<<'\t';
for(int j = 0; j < N - 1; ++j)
{ if (A[i].DR[j + 1] < A[i].DR[j]) 
{
    tmp = A[i].DR[j + 1]; 
               A[i].DR[j + 1] = A[i].DR[j]; 
                A[i].DR[j] = tmp;
}
} 
cout<<A[i].DR[j]<<".";
cout<<"\n";
}
} 
int main()
{
const int N=2;
Znak obj1[N];
init(obj1,N);
Show(obj1,N);
system("PAUSE");
return 0;
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2015, 13:11
ITALIANO, я же для тебя показал наиболее простой способ. Описываешь дополнительную функцию, в которой переводишь дату в наиболее удобную единицу. И такие удобные единицы сравниваешь между собой.

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
#include <iostream>
#include "string.h"
 
const int N = 256;
 
//Описание структуры по заданию
struct Znak
{
    char
        FirstName[N],
        LastName[N],
        Zodiak[N];
    size_t DR[3];
}; //Массив структур в восемь элементов
 
        //Заполнение структуры
void init(Znak *A, int size)
{
    char S[N];
 
    for (int i = 0; i<size; i++)
    {
        std::cout << "FirstName: "; std::cin >> S;
        strcpy(A[i].FirstName, S);
        std::cout << "LastName: "; std::cin >> S;
        strcpy(A[i].LastName, S);
        std::cout << "Zodiak: "; std::cin >> S;
        strcpy(A[i].Zodiak, S);
        std::cout << "Date: " << '\n';
        for (int j = 0; j<3; j++)
            std::cin >> A[i].DR[j];
 
        std::cout << '\n';
    }
}
 
void sort_znak(Znak  *A, int size) {
    for (int i=1;i<size;i++)  //i - номер прохода
    {
        for (int j=i-1;j<size-1;j++) //j внутренний номер прохода.
        {
            int D1 = A[j].DR[0] +  A[j].DR[1] * 32 +  A[j].DR[2] * 32 * 12; //Переводишь дату в дни, где 1 месяц = 32 дня   и 1 год = 32 дня * 12 месяцев
            int D2 = A[j+1].DR[0] + A[j+1].DR[1]*32 + A[j+1].DR[2] * 32 * 12; //Аналогично для второго элемента, чтобы корректно сравнивать такие единицы между собой.
                  if ( D1 > D2 ) std::swap(A[j],A[j+1]); //Сравниваешь получившиеся дни, по необходимости меняешь местами (по убыванию или возрастанию зависит только от знака).
                  //DR[0] - день, DR[1] - месяц, DR[2] - год.
                  //A[j] - A - это указатель на начало массива структур, A[j] - элемент из массива
        }
    }
}
 
//Вывод всей структуры на экран
void Show(Znak *A, int N)
{
    for (int i = 0; i<N; i++)
    {
        std::cout << A[i].FirstName << '\t';
        std::cout << A[i].LastName << '\t';
        std::cout << A[i].Zodiak << '\t';
        for (int j = 0; j<3; j++) std::cout << A[i].DR[j] << ".";
        std::cout << "\n";
    }
}
 
int main()
{
   const int N=4;
  Znak obj1[N];
      init(obj1,N);
      Show(obj1,N);
      sort_znak(obj1,N);
      std::cout << "\n\n";
      Show(obj1,N);
 system("PAUSE");
}
1
1 / 1 / 4
Регистрация: 24.10.2014
Сообщений: 200
14.12.2015, 16:08
Спасибо всем большое!!! Благодаря вам всем я смог написать эту программу (хотя она и не так была устроена как я полагал...).
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
#include <cstdlib>
#include <math.h>
#include <string.h>
 
using namespace std;
 
struct Znak
{char LastName[30];
char FirstName[20];
char Zodiak[15];
int DR[3];
};
main ( )
{ 
    Znak s[25], tmp;
int i, j, DR, n, k, c;
n=3;
for(i=0; i<n; i++)
{
cout<<"Введите фамилию: ";
cin>>s[i].LastName;
cout <<"Введите имя: ";
cin>>s[i].FirstName;
cout <<"Введите знак Зодиака: ";
cin>>s[i].Zodiak;
cout<<"Введите день рождения:"<<endl;
cout<<"День:\n";
cin>>s[i].DR[0];
cout<<"Месяц:\n";
cin>>s[i].DR[1];
cout<<"Год:\n";
cin>>s[i].DR[2];
}
cout<<"Введите дату рождения по месяцу: ";
cin>>k;
for (i=0;i<n;i++) 
for(int j=0;j<n-1;++j)
if(strcmp(s[i].LastName,s[j].LastName)<0)
{tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
for (i=0;i<n;i++)
if (s[i].DR[1]==k)
{
cout<<endl;
c=1;
cout<<"Фамилия: "<<s[i].LastName<<endl;
cout<<"Имя: "<<s[i].FirstName<<endl;
cout<<"Знак Зодиака: "<<s[i].Zodiak<<" "<<endl;
cout<<"День рождения по месяцу: ";
cout<<"День:"<<s[i].DR[0]<<"\n";
cout<<"Месяц:"<<s[i].DR[1]<<"\n";
cout<<"Год:"<<s[i].DR[2]<<"\n";
}
if (k==0) cout<<"Такого месяца нет в списке. "<<endl;
return 0;
}
Вот пример моего кода м.б. кому и пригодится... Всем ещё раз спасибо...
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
14.12.2015, 16:51
Цитата Сообщение от daslex Посмотреть сообщение
Но лучше переводить дату в дни. И их сравнивать.
зачем?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
union date{
    struct{
        char day;
        char month;
        short year;
    };
    int signature;
};
int main(){
    date d1, d2;
 
    d1.day=1;
    d1.month=2;
    d1.year=3;
 
    d2.day=10;
    d2.month=1;
    d2.year=3;
 
    cout<<(d1.signature<d2.signature);
  return 0;
}
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2015, 17:21
Kuzia domovenok, потому что это очень очевидный способ. А в случае с объединениями не все так гладко.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
union date{
    struct{
        short year;
        char month;
        char day;
    };
    int signature;
};
 
int main(){
    date d1, d2;
 
    d1.day=30;
    d1.month=11;
    d1.year=2001;
 
 
    d2.day=29;
    d2.month=12;
    d2.year=2001;
 
    std::cout<<(d1.signature < d2.signature); //30 ноября 2001 < 29 декабря 2001 ? (я думаю да)
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
14.12.2015, 17:26
Цитата Сообщение от daslex Посмотреть сообщение
//30 ноября 2001 < 29 декабря 2001 ? (я думаю да)
не понял претензии. а она разве по-другому отвечает?
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2015, 17:34
Мне так-то понравился способ, (хотя и плохо понял принцип), но скрин работы программы печалит.(clang) Я ожидал единичку.
Миниатюры
Описать структуру с именем ZNAK  
0
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217
04.01.2016, 17:43
а какой тут метод сортировки??
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
#include <conio.h>
#include <stdio.h> 
#include <string.h> 
#include <locale.h> 
using namespace std ;
 
 
 
int main(int a)
{    int i, j, n, b,d, flag; char isk[10]; char dan[10];
       setlocale(LC_ALL,"Russian");    
    n=8;
  struct ZNAK
  
   {//??????????? ???????????? ???? ZNAK
     char f[10];//???????
     char name[7];//???
     char znak[9];//????
     int x[3];//????, ?????, ???
     
   } array[6];
  flag=0;
  for (i=0; i<n; i++)
{
  printf("Ââåäèòå ôàìèëèþ: ");
  scanf("%s", array[i].f);
  printf("Ââåäèòå èìÿ: ");
  scanf("%s", array[i].name);
  printf("Ââåäèòå çíàê  çîäèàêà: ");
  scanf("%s", array[i].znak);
  printf("Ââåäèòå äàòó ðîæäåíèÿ: ");
  
  for (j=0; j<3;j++)
  scanf("%d",&(array[i].x[j]));
  printf("\n");
}
   for (d=0; d<n-1; d++) 
        for (i=0; i<n-1-d; i++){          
            if (array[i].x[2] > array[i+1].x[2])
             {array[8]=array[i];
             array[i]=array[i+1];
             array[i+1]=array[8];}
          if (array[i].x[2] == array[i+1].x[2]){
           if (array[i].x[1] > array[i+1].x[1]){
              array[8]=array[i];
              array[i]=array[i+1];
              array[i+1]=array[8];}
           if (array[i].x[1] == array[i+1].x[1])
              if (array[i].x[0] > array[i+1].x[0]){
                  array[8]=array[i];
                  array[i]=array[i+1];
                  array[i+1]=array[5];}
 
          } }
   for (i=0; i<n; i++){
    printf("\n\nÔàìèëèÿ: %s",array[i].f);
    printf("\nÈìÿ: %s",array[i].name);
    printf("\nÇíàê çîäèàêà: %s", array[i].znak);
     for (j=0; j<3;j++)
    printf("\nÄàòà ðîæäåíèÿ: %d", array[i].x[j]);
    printf("\n");
   }
  printf("Ââåäèòå ôàìèëèþ èñêîìîãî ÷åëîâåêà: ");
  scanf("%s", isk);
  printf("\n\nÍàéäåííàÿ èíôîðìàöèÿ:");
 
  for (i=0; i<n; i++)
{if (strcmp(array[i].f,isk)==0) {
    printf("\nÔàìèëèÿ: %s",array[i].f);
    printf("\nÈìÿ: %s",array[i].name);
    printf("\nÇíàê çîäèàêà: %s", array[i].znak);
    flag=1;
     for (j=0; j<3;j++)
    printf("\nÄàòà ðîæäåíèÿ: %d", array[i].x[j]);
  }
 }
  if (flag==0) printf("Èíôîðìàöèÿ íå íàéäåíà");
     getch();
     return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2016, 17:43

Описать структуру с именем ZNAK
Дорогие программисты здравствуйте ,я в отчаянии , который день я ломаю голову как же построить код этой программы :( Описать структуру с...

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: * фамилия, имя; * знак Зодиака; * дата рождения (массив из трех чисел). ...

Описать структуру с именем ZNAK
описать скрутуру с именем ZNAK, содержащую следущщие поля: STUDENT AEROFLOT TRAIN WORKER MARSH(маршрут) Написать программу,...

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следущие поля:NAME - фамилия, имя; ZODIAC - знак зодиака;BDAY - день рождения(массив из трех...

Описать структуру с именем ZNAK
описать структуру с именем ZNAK содержащие следующие поля фамилия,имя знак зодиака дата рождения Как сделать файл что бы не...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru