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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 01:17   #1
elivartar
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 2
По умолчанию сортировка массива слов по алфавиту

помогите пожалуйста.
задание: Найти в строке все слова, являющиеся симметричными. Найденные слова вывести в алфавитном порядке.
я написал программу, но он выдают ошибку при сортировки по алфавиту.


Код:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iostream>
const int nn=200;
void simetr (char *s,bool *pr)
{
	*pr=true;
	int i=0;
	while (*pr && i<strlen(s)/2)
	{
		if (s[i]!=s[strlen(s)-i-1])
			*pr=false;
		else i++;
	}
}
void sort(char** slpr, int strcnt)
{
	for(int i = 0; i < strcnt - 1; i++)
		for(int j = i + 1; j < strcnt-1; j++)
			if(strcmp(slpr[i], slpr[j]) < 0) 
			{
				char* tmp = slpr[i];
				slpr[i] = slpr[j];
				slpr[j] = tmp;
			}
}

int main()
{
	char s[nn],*sl[nn],*slpr[nn];
	int m,i,n=0,j;
	char *c,*b;
	bool pr,flag;
	printf ("Vvedite predlogenie: \n");
	gets (s);
	m=-1;
	c=strtok (s," ,.;:!?");
	while (c!=NULL)
	{
		m++;
		sl[m]=c;
		c=strtok (NULL," ,.;:!?");
	}
	for (i=0;i<=m;i++)
	{
		simetr (sl[i],&pr);
		if (pr) 
		{
			slpr[i]=sl[i];
			n++;
		}
	}
	sort (slpr,m);
	for (i=0;i<n-1;i++)
		printf ("%s  ",slpr[i]);
	_getch ();
	return 0;
}

Последний раз редактировалось ACE Valery; 26.12.2011 в 17:34.
elivartar вне форума Ответить с цитированием
Старый 26.12.2011, 07:41   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

elivartar, для сортировки слов и чисел есть функция qsort: ссылка
8Observer8 вне форума Ответить с цитированием
Старый 31.12.2011, 21:00   #3
OstyN
Пользователь
 
Аватар для OstyN
 
Регистрация: 31.12.2011
Сообщений: 12
По умолчанию

Может поможет... выдрал со своей работы:

Код:
void alfavit (char **str, int n)
{ 
       system("cls");
       char i;
       int j, g=0;
       for (i='A'; i<='Z'; i++)
       {
              for (j = 0; j < n; j++)
                     if ((*(*(str + j)))==i)
                     {
                            g++;
                            printf("[%d.] ", g);
                            puts (*(str + j));
				printf ("\n");
                     }
       }
}
или же можно использовать функ-ю strcmp
Asm, C/C++
OstyN вне форума Ответить с цитированием
Старый 19.03.2014, 14:46   #4
okosko18
Заблокирован
 
Регистрация: 03.04.2013
Сообщений: 2
По умолчанию

Код в C:


#pragma hdrstop
#pragma argsused

#include <stdio.h>
#include <tchar.h>

#include <conio.h>
#include <windows.h>
#include <cctype>
#include <cmath>
#include <sys/types.h>

#include <stdio.h>

void main() {

int A, index, rep = 1, i, j;
char N[100], t;
while (rep == 1){
clrscr();
printf("Введите слова или цифры : ");
scanf("%s",N);
for(i = 0; N[i] != '\0'; i++)
{
for(j = i+1; N[j] != '\0'; j++)
{
if (N[i] < N[j]) //здесь меняем значение в обратную сторону алфавит либо вперед (<) (>)
{
t = N[i];
N[i] = N[j];
N[j] = t;
}
}
}
printf("\nБуквы в алфавитном порядке либо цифры: %s\n", N);
printf("\nПовторить - 1 / Закончить - 0 ");
scanf("%i", &rep);

}
}

Последний раз редактировалось okosko18; 19.03.2014 в 15:06.
okosko18 вне форума Ответить с цитированием
Старый 19.03.2014, 15:02   #5
okosko18
Заблокирован
 
Регистрация: 03.04.2013
Сообщений: 2
По умолчанию Код в C:

Цитата:
Сообщение от okosko18 Посмотреть сообщение
Код в C:


#pragma hdrstop
#pragma argsused

#include <stdio.h>
#include <tchar.h>

#include <conio.h>
#include <windows.h>
#include <cctype>
#include <cmath>
#include <sys/types.h>


#include <stdio.h>
void main() {

int A, index, rep = 1, i, j;
char N[100], t;
while (rep == 1){
clrscr();
printf("Введите слова или цифры : ");
scanf("%s",N);
for(i = 0; N[i] != '\0'; i++)
{
for(j = i+1; N[j] != '\0'; j++)
{
if (N[i] < N[j]) //здесь меняем значение в обратную сторону алфавит либо вперед (<) (>)
{
t = N[i];
N[i] = N[j];
N[j] = t;
}
}
}
printf("\nБуквы в алфавитном порядке либо цифры: %s\n", N);
printf("\nПовторить - 1 / Закончить - 0 ");
scanf("%i", &rep);

}
}
конец проги
okosko18 вне форума Ответить с цитированием
Старый 06.07.2016, 07:20   #6
цен
Новичок
Джуниор
 
Регистрация: 06.07.2016
Сообщений: 1
По умолчанию УМОЛЯЯЯЯЮ!!!!!

Здравствуйте, парюсь с этой задачей уже 3 дня. Дали для на пересдачу, объясните идиоту как это решается.


Составить алгоритм и написать программу.
Дана матрица M размером 3x3.Все переменные символьного типа.Рассортировать данный массив в алфавитном порядке.Новую Матрицу вывести на экран.
цен вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива char по алфавиту iHikita Помощь студентам 1 25.05.2010 13:10
Как создать упорядочивание слов в строке (memo) по алфавиту Лаваzzа Помощь студентам 0 03.05.2010 20:40
Сортировка слов по алфавиту vital_56 Microsoft Office Word 16 23.12.2009 17:09
Сортировка слов по алфавиту dom1nator Помощь студентам 0 11.11.2009 00:04
Сортировка слов по алфавиту victorio Microsoft Office Word 7 15.12.2007 19:03