Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 16:25   #1
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию Неправильно работает сортировка строк в структуре.

У меня такое задание:

1. Описать структуру с именем ZNAK, содержащую следующие поля:
• фамилия, имя;
• знак Зодиака;
• день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры да1Н1ых в массив, состоящий из восьми элементов тина
ZNAK; записи должны быть упорядочены по датам дней рождения;
• вывод на экран информации о людях, родившихся под знаком, наименование
которого введено с клавиатуры;
• если таких нет, выдать на дисплей соответствующее сообщение.


Код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>


const int N=8;

struct NAME
{char name1[50];
char name2[50];};

struct ZNAK
{struct NAME name;
char znak[50];
int bd[3];};

void vivod(struct ZNAK *b);
void sort_bd(struct ZNAK *b);
void russish(char *array);

int main()
{

struct ZNAK a[N]=

{
"Арсений", "Арсеньев", "рыба", {15,03,1992},
"Софья","Софьева","водолей",{16,02,1992},
"Гавриил","Гавриилов", "овен",{19,04,1992},
"Порфирий","Порфирьев","лев",{12,8,1991},
"Аввакум","Аввакумов","дева",{07,9,1991},
"Корнилий","Корнилов","водолей",{15,02,1991},
"Феофан", "Феофанов","козерог",{15,01,1991},
"Михей","Михеев","рак",{12,07,1993},
}

;


for(int i=0;i<N;i++)
{
russish(a[i].name.name1);
russish(a[i].name.name2);
russish(a[i].znak);
}





vivod(a);//список

sort_bd(a);

printf("\n\n");

vivod(a);//список


system("pause");
return 0;
}


void vivod(struct ZNAK *b)
{
printf("\n-------------------------------------------\n");
for(int i=0;i<N;i++)
{

printf("%s   %s   %s   ",b[i].name.name1,b[i].name.name2,b[i].znak);

for(int j=0;j<3;j++)
printf("%i.",b[i].bd[j]);

printf("\n");
}
printf("\n-------------------------------------------\n\n");

}




void sort_bd(struct ZNAK *b)
{

struct ZNAK buf;

for(int n=0;n<N-1;n++)//сортировка по году
for(int i=0;i<N-1;i++)
{
if(b[i].znak[2]>b[i+1].znak[2])
{
buf=b[i];
b[i]=b[i+1];
b[i+1]=buf;


}
}
/*for(int n=0;n<N-1;n++)//сортировка по месяцу
for(int i=0;i<N-1;i++)
if(b[i].znak[2]==b[i+1].znak[2])
{
if(b[i].znak[1]>b[i+1].znak[1])
{
buf=b[i];
b[i]=b[i+1];
b[i+1]=buf;
}
}


for(int n=0;n<N-1;n++)//сортировка по дням
for(int i=0;i<N-1;i++)
if(b[i].znak[2]==b[i+1].znak[2] && b[i].znak[1]==b[i+1].znak[1])
{
if(b[i].znak[1]>b[i+1].znak[1])
{
buf=b[i];
b[i]=b[i+1];
b[i+1]=buf;
}
}*/


}


void russish(char *array)
{
int granica;
 
granica=strlen(array);       
for(int i=0;i<granica;i++)
{
        
switch(array[i])
{case-71:array[i]=78;break;
case-72:array[i]=165;break;
case-88:array[i]=133;break;}        
        
              
if (array[i]>=-64 && array[i]<=-17) array[i]+=192;
if (array[i]>=-16 && array[i]<=-1) array[i]+=240;   
       
        
}

  
     
}
Сначала сортирую по году. Сортировка пузырьком работает неправильно, в чём проблема?
ivan.tiran вне форума Ответить с цитированием
Старый 25.03.2013, 17:04   #2
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Разобрался: проводил сортировку не потому полю. Надо было по bd, а я по znak.
ivan.tiran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка в структуре. Sorento2 Общие вопросы C/C++ 8 19.12.2012 01:05
сортировка в структуре Oleg34 Общие вопросы C/C++ 1 16.09.2011 21:03
неправильно работает сортировка Brabus Помощь студентам 1 30.05.2010 14:25
Сортировка фамилий в структуре Красавчег))) Общие вопросы C/C++ 2 04.01.2010 01:07
Сортировка строк по алфавиту в структуре с помощью указателей Anarki Общие вопросы C/C++ 2 23.10.2009 19:36