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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2009, 19:41   #1
sailol
 
Регистрация: 15.04.2009
Сообщений: 3
По умолчанию [C++] Вывод в алфавитном порядке?

Всем здрасти...
Дело в том, что никак не могу додумать своим умом как решить данную задачу... Сам я не силен в программировании, хоть и пытаюсь научится, так что прошу если не сложно подкинте идею как реализовать...

Есть задача:
Ввод с клавиатуры данных в массив airport, состоящий из семи элементов типа aeroflot, записи должны быть размещены в алфавитном порядке по названию пунктов назначения.

Проблема:
Не знаю как разместить их в алфавитном порядке, мб это вообще легко, но я что то туплю, и идей у меня нету T_T

Текст программы который я пока начеркал:
Код:
#include <stdio.h>
 main()
{ int i;
 struct aeroflot
  {
   char nazn[30];
   int numb;
   char tip[30];
  }
   struct aeroflot airport[7];
    for (i=o;i<7;i++)
    {
     printf("\n Vvedite punkt naznacheniya");
     scanf("%s", airport[i].nazn);
     printf("\n Vvedite nomer reysa");
     scanf("%i", airport[i].numb);
     printf("\n Vvedite tip samoleta");
     scanf("%s", airport[i].tip);
    }
Умоляю, дайте знать нубу как реализовать поставленную задачу...
sailol вне форума Ответить с цитированием
Старый 15.04.2009, 21:15   #2
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Объясню на примере, дан массив из девяти элементов и для сортировки надо ввести переменную, в которой мы будем сохранять промежуточное значение, например s, а это конкретный пример сортировки(метод пузырька):
Код:
for (int i=0; i<9-1; ++i)
{ for (int j=0; j<9-1; ++j)
{ if (a[i]>a[i+1]) else
{ s=a[i];
  a[i]=a[i+1];
  a[i+1]= s;
}
}
}
На работоспособность не проверял, но ,думаю, принцип ясен.
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 15.04.2009, 21:20   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

примерно так
Код:
for(int i=0;i<6;i++)
          {
             for(int j=i+1;j<7;j++)
              {
                  if( strcmp(airport[i].nazn,airport[j].nazn)>0)
                  {
                          aeroflot tmp=airport[i];
                          airport[i]=airport[j];
                          airport[j]=tmp;
                  }
              }
           }
counter вне форума Ответить с цитированием
Старый 16.04.2009, 12:59   #4
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Код:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
char buf[5];
struct aeroflot{
   char nazn[30];
   int numb;
   char tip[30];
};
struct aeroflot airport[7];
int p(aeroflot a , aeroflot b){
   return strcmp(a.nazn , b.nazn) <= 0;
}
int main(){ 
   puts("Vvedite kolichestvo reysov: ");
   scanf(" %d" , &n);
   gets(buf);
   for(int i = 0; i < n; i++){
      puts("Vvedite punkt naznacheniya: ");
      gets(airport[i].nazn);
      puts("Vvedite nomer reysa: ");
      scanf(" %d",  &airport[i].numb);
      gets(buf);
      puts("Vvedite tip samoleta: ");
      gets(airport[i].tip);
    }
   sort(airport , airport + n , p);
   puts("\n");
   for(int i = 0; i < n; i++) printf("%s %d %s\n" , airport[i].nazn , airport[i].numb , airport[i].tip);
   return 0;
}
megachuhancer вне форума Ответить с цитированием
Старый 26.04.2009, 19:10   #5
sailol
 
Регистрация: 15.04.2009
Сообщений: 3
По умолчанию

Перепробывал все ваши варианты, к сожалению что то у меня не вышло не с одним подружится...

Щас пока вот что сделал
Код:
#include <stdio.h>
#include <iostream.h>
 main()
{ int i;
  char r,t[20];
 struct aeroflot
  {
   char nazn[20];
   int numb;
   char tip[20];
  };
  aeroflot air[7];
    for (i=0;i<7;i++)
    {
     cout<<"\n Vvedite punkt naznacheniya";
     cin>>air[i].nazn;
     cout<<"\n Vvedite nomer reysa";
     cin>>air[i].numb;
     cout<<"\n Vvedite tip samoleta";
     cin>>air[i].tip;
     {
     if (air[i].nazn>air[i+1].nazn)
      { r=air[i].nazn;
    air[i].nazn=air[i+1].nazn;
    air[i+1].nazn=r;
      }
     }
    }
     for (i=0;i<7;i++)
      {
       printf("\n Punkt naznacheniya",air[i].nazn);
       printf("\n Nomer reysa",air[i].numb);
       printf("\n Tip samoleta",air[i].tip);
      }
   printf("\n\n Vvedite tip samoleta");
   scanf("%s", t);
    if (t==air[i].tip)
     {
     printf("\n Punkt naznacheniya - %s ",air[i].nazn);
     printf("\n Nomer reysa - %i ",air[i].numb);
     }
      else
      printf("\n Takie samoleti v dannoe vremya nedostupni");
}
Можете указать на ошибки, что не правильно, потому что компилятор что то очень сильно ругается?
sailol вне форума Ответить с цитированием
Старый 27.04.2009, 12:39   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
#include <stdio.h>
#include <iostream>
#include<conio.h>
using namespace std;
void main()
{ int i;
  char r[20],t[20];
 struct aeroflot
  {
   char nazn[20];
   int numb;
   char tip[20];
  };
  aeroflot air[7];
  aeroflot tmp;
    for (i=0;i<7;i++)
    {
     cout<<"\n Vvedite punkt naznacheniya ";
     cin>>air[i].nazn;
     cout<<"\n Vvedite nomer reysa ";
     cin>>air[i].numb;
     cout<<"\n Vvedite tip samoleta ";
     cin>>air[i].tip;
	 cout<<"\n----------------------------------\n";
	}

	for(int i=0;i<6;i++)
    {
     for(int j=i+1;j<7;j++)
	 {
     if (strcmp(air[i].nazn,air[j].nazn)>0)
      { tmp=air[i];
	    air[i]=air[j];
		air[j]=tmp;
      }
     }
    }

     for (i=0;i<7;i++)
      {
       printf("\n Punkt naznacheniya - %s",air[i].nazn);
       printf("\n Nomer reysa - %d",air[i].numb);
       printf("\n Tip samoleta - %s",air[i].tip);
	   cout<<"\n----------------------------------\n";
      }
   printf("\n\n Vvedite tip samoleta");
   scanf("%s", t);

   int flag1=0,flag2=0;
   for(int i=0;i<7;i++)
   {
     if (strcmp(air[i].tip,t)==0)
     {
      printf("\n Punkt naznacheniya - %s ",air[i].nazn);
      printf("\n Nomer reysa - %i ",air[i].numb);
	  flag1=0;
	  flag2=1; // viveli hotya by odnu zapis'
     }
     else flag1=1; // net sovpadeniy
   }

   if(flag1 && !flag2)printf("\n Takie samoleti v dannoe vremya nedostupni");

	_getch();
}
counter вне форума Ответить с цитированием
Старый 27.04.2009, 21:37   #7
sailol
 
Регистрация: 15.04.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
Код:
#include <stdio.h>
#include <iostream>
#include<conio.h>
using namespace std;
void main()
{ int i;
  char r[20],t[20];
 struct aeroflot
  {
   char nazn[20];
   int numb;
   char tip[20];
  };
  aeroflot air[7];
  aeroflot tmp;
    for (i=0;i<7;i++)
    {
     cout<<"\n Vvedite punkt naznacheniya ";
     cin>>air[i].nazn;
     cout<<"\n Vvedite nomer reysa ";
     cin>>air[i].numb;
     cout<<"\n Vvedite tip samoleta ";
     cin>>air[i].tip;
	 cout<<"\n----------------------------------\n";
	}

	for(int i=0;i<6;i++)
    {
     for(int j=i+1;j<7;j++)
	 {
     if (strcmp(air[i].nazn,air[j].nazn)>0)
      { tmp=air[i];
	    air[i]=air[j];
		air[j]=tmp;
      }
     }
    }

     for (i=0;i<7;i++)
      {
       printf("\n Punkt naznacheniya - %s",air[i].nazn);
       printf("\n Nomer reysa - %d",air[i].numb);
       printf("\n Tip samoleta - %s",air[i].tip);
	   cout<<"\n----------------------------------\n";
      }
   printf("\n\n Vvedite tip samoleta");
   scanf("%s", t);

   int flag1=0,flag2=0;
   for(int i=0;i<7;i++)
   {
     if (strcmp(air[i].tip,t)==0)
     {
      printf("\n Punkt naznacheniya - %s ",air[i].nazn);
      printf("\n Nomer reysa - %i ",air[i].numb);
	  flag1=0;
	  flag2=1; // viveli hotya by odnu zapis'
     }
     else flag1=1; // net sovpadeniy
   }

   if(flag1 && !flag2)printf("\n Takie samoleti v dannoe vremya nedostupni");

	_getch();
}
Премного благодарен, даже не знаю как выразить как я рад!
Теперь я вроде понял как действительно работает метод пузырька...
СПАСИБО!!!!!!!!!
sailol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить слова в алфавитном порядке sasha45 Общие вопросы C/C++ 36 20.06.2011 11:03
Сортировка в алфавитном порядке [MI_nor] Общие вопросы C/C++ 14 17.03.2009 23:12
Вывод списка в алфавитном порядке ErvinR PHP 4 24.10.2008 16:03
отсортировать таблицу сначала в алфавитном порядке фамилий продавцов, затем в порядке возростания получен Lora Microsoft Office Excel 1 31.05.2008 17:22