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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2009, 17:00   #1
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию Сортировка строк...plz help))

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

#define SIZE 81
#define LIM 20
#define HALT ""

void main (void);
void str_sort(char *[] ,int);
char* Rus(const char* text);

void main(void)
{
 static char input [LIM][SIZE];
 char *ptstr[LIM];
 int ct=0;
 int k,i=0,words=0;

 printf(Rus("Введите не менее 10 строк.\n"));
 printf(Rus("Для прекращения ввода нажмите ENTER в начале строки.\n"));
 while (gets(input[ct])!=NULL && ct<LIM)
 {
  if(strcmp(input[ct],HALT)==0)
  {
   if(ct<10)
   {
    printf(Rus("Введите не менее 10 строк(введено %d)\n"), ct);
	continue;
   }
   break;
  }
  ct++;
  ptstr[ct-1]=input[ct-1];
 }
 str_sort(ptstr,ct);
 puts(Rus("\nОтсортированный список строк:\n"));
 for (k=0;k<ct;k++)
 {
  puts(ptstr[k]);
  for(i=strlen(ptstr[k]);i>=0;i--)//obrat
   printf("%c", ptstr[k][i]);//
 }
}
void str_sort(char *string[],int num)
{
 char *temp;
 int top,seek;
 

 for(top=0;top<num-1;top++)
  for(seek=top+1;seek<num;seek++)
   if(strcmp(string[top],string[seek])>0)
   {
    temp=string[top];
    string[top]=string[seek];
    string[seek]=temp;
   }
}

char bufRus[256];

char* Rus(const char* text)
{
 CharToOem(text,bufRus);
 return bufRus;
}

вот прога которая сортирует по строкам по первому символу строки по алфавиту... и выводит отсортированные строки в алфовитном порядке...сортировка осуществляется по первой букве в строке...

помогите переделать задачу..чтобы она сортировала в каждой строке слова по алфавиту...)

Последний раз редактировалось Sazary; 17.10.2009 в 01:30.
maslo вне форума Ответить с цитированием
Старый 16.10.2009, 18:27   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

строки не присваиваются, а копируются!

Код:
void str_sort(char *string[],int num)
{
	char temp[255];
	int top,seek;

	for(top=0;top<num-1;top++)
		for(seek=top+1;seek<num;seek++)
			if(strcmp(string[top],string[seek])>0)
			{
				strcpy(temp,string[top]);
				strcpy(string[top],string[seek]);
				strcpy(string[seek],temp);
			}
}
counter вне форума Ответить с цитированием
Старый 16.10.2009, 18:45   #3
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию

угу((...незнаю как сделать нормально...(
maslo вне форума Ответить с цитированием
Старый 16.10.2009, 19:14   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

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

#define SIZE 81
#define LIM 20
#define HALT ""

void str_sort(char *[] ,int);

void main()
{
	static char input [LIM][SIZE];
	char *ptstr[LIM];
	int ct=0;
	int k,i=0,words=0;

	setlocale(LC_ALL,"rus");
	printf("Введите не менее 10 строк.\n");
	printf("Для прекращения ввода нажмите ENTER в начале строки.\n");
	
	while (gets(input[ct])!=NULL && ct<LIM)
	{
		if(strcmp(input[ct],HALT)==0)
		{
			if(ct<10)
			{
				printf("Введите не менее 10 строк(введено %d)\n", ct);
				continue;
			}
			break;
		}
		ct++;
		ptstr[ct-1]=input[ct-1];
	}
	
	str_sort(ptstr,ct);
	
	puts("\nОтсортированный список строк:\n");

	for (k=0;k<ct;k++)
	{
		puts(ptstr[k]);
	}
	_getch();
}



void str_sort(char *string[],int num)
{
	char temp[255];
	int top,seek;

	for(top=0;top<num-1;top++)
		for(seek=top+1;seek<num;seek++)
			if(strcmp(string[top],string[seek])>0)
			{
				strcpy(temp,string[top]);
				strcpy(string[top],string[seek]);
				strcpy(string[seek],temp);
			}
}
counter вне форума Ответить с цитированием
Старый 17.10.2009, 12:22   #5
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию

немного не так....мне нужно чтобы программа делала сортировку слов в строках но алфавиту....( буду благодарен за помощь...
maslo вне форума Ответить с цитированием
Старый 17.10.2009, 16:44   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

пример покажи
counter вне форума Ответить с цитированием
Старый 17.10.2009, 18:07   #7
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию

вводим к примеру 3 строки....
1 строка:вода агонь дерево
2 строка:дверь ручка волосы
3 строка:сообщение адрес борисов

отсортированные строки:
1 строка:агонь вода дерево
2 строка:волосы дверь ручка
3 строка:адрес борисов сообщение


вот какая нужна сортировка...просто непонимаю как это сделать...(
maslo вне форума Ответить с цитированием
Старый 17.10.2009, 22:17   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

можно, используя strtok, выделить слова из строки в массив, отсортировать полученный массив и скопировать в исходную строку
counter вне форума Ответить с цитированием
Старый 20.10.2009, 20:38   #9
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию

каким образом?
maslo вне форума Ответить с цитированием
Старый 24.10.2009, 13:22   #10
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
#include <iostream>
#include <conio.h>

using namespace std;

void str_sort(char string[][30],int num)
{
	char temp[30];
	int top,seek;

	for(top=0;top<num-1;top++)
		for(seek=top+1;seek<num;seek++)
			if(strcmp(string[top],string[seek])>0)
			{
				strcpy(temp,string[top]);
				strcpy(string[top],string[seek]);
				strcpy(string[seek],temp);
			}
}

void sort(char *str)
{
	char *p,buff[10][30];

	p=strtok(str," ");
	if(p) strcpy(buff[0],p);

	int i=1;
	do {
		p=strtok('\0'," ");
		if(p)
		{
			strcpy(buff[i],p);
			i++;
		}
	}while (p);

	str_sort(buff,i);
    *str='\0';
	for(int j=0;j<i;j++)
	{
		strcat(str,buff[j]);
		strcat(str," ");
	}
}

void main()
{
	char str[10][30];

	cout<<"Vvedite 10 strok:\n";
	for(int i=0;i<1;i++)
	{
		cout<<"\nstroka "<<i+1<<" : ";
		cin.getline(str[i],30);
	}
	system("cls");
	
	cout<<"Stroki do sortirovki:\n";
    for(int i=0;i<1;i++)
	{
		cout<<"\nstroka "<<i+1<<" : "<<str[i];
	}

	cout<<"\n\nStroki posle sortirovki:\n";
    for(int i=0;i<1;i++)
	{
		sort(str[i]);
		cout<<"\nstroka "<<i+1<<" : "<<str[i];
	}

	_getch();
}
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка строк Anarki Общие вопросы C/C++ 2 19.09.2009 20:06
сортировка строк матрицы aurora_87 Общие вопросы C/C++ 3 23.04.2009 12:29
Сортировка строк в TStringGrid dimon000 Общие вопросы Delphi 6 03.07.2008 12:59
Сортировка строк sheva75 Microsoft Office Excel 3 06.02.2008 05:00