Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Cортировка слов текста по алфавиту методом выбора


Автор: atomlex 30.11.2009, 00:26
Здравствуйте.Подскажите как будет выглядеть программа если задание будет:"Выполнить сортировку слов текста по алфавиту методом  выбора".Текст читается из файла.
Заранее благодарен.


 ! 
bsa
Для своих вопросов нужно создавать отдельные темы

Автор: bsa 30.11.2009, 11:37
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Carlos0N 30.11.2009, 12:17
http://algolist.manual.ru/sort/select_sort.php

изучайте на здоровье =)

Автор: atomlex 30.11.2009, 20:14
Прошу прощения, что не там создал тему.
Как выглядит сортировка выбором я знаю, единственно не могу сообразить как сделать ее по русскому алфавиту...
Т.е. есть текст.Его нужно отсортировать по алфавиту.
Знающие люди, помогите советом)

Автор: Carlos0N 30.11.2009, 21:02
ээм.. ты покажи как ты делал что у тебя не сортируются рус. буквы.
помойму в виндовс к примеру русский алфавит по порядку закодирован

Автор: atomlex 30.11.2009, 21:17
В смысле как сортироват числа я знаю, не представляю как это сделать со словами)
И каким образом использовать аски-код в этом деле?

Автор: atomlex 3.12.2009, 01:30
Код

#include <string>
#include <iostream.>
#include<stdio.h>


void Sort (int N, int i=0)
sort< char >( A[], B[], min);

      int strcmp(const char *A, const char *B);
      {

if (i<N)    
{

int min = A[i], index=i;

  for (int j=i+1; j<N; j++)
      
      if (A[j]<min) min=A[j],index=j;
                  A[index]=A[i];
                  A[i]=min;

                  Sort(A, N, i+1);   }

}





Почитал про функцию strcmp, теперь пытаюсь нормально ее реализовать.Получается бред.Хелп ми.

Автор: djamshud 3.12.2009, 01:55
Функцию strcmp реализовывать не нужно, а она уже реализована в либси.

Код

#include<stdio.h>
#include<string.h>

int main(int argc,char **argv) {
    if (argc<3) {
        printf("Using: %s word1 word2\n",argv[0]);
        return 1;
    }
    int res=strcmp(argv[1],argv[2]);
    printf("%s %s %s\n",argv[1],res<0?"less than":res==0?"equal":"greater than",argv[2]);
    return 0;
}


Автор: atomlex 3.12.2009, 16:36
Получается к этому коду нужно приписать сорировку выбором и задача будет решена?

Автор: djamshud 3.12.2009, 20:27
К этому коду ничего не нужно приписывать. А в коде сортировки выбором нужно использовать strcmp для сравнения пары строк.

Автор: atomlex 3.12.2009, 20:42
Не понял немного.Как это выглядеть будет?

Автор: atomlex 6.12.2009, 18:00
У меня не получается привязать эту функцию к самой сортировке выбором.

Автор: atomlex 7.12.2009, 23:46
При линковке выходят следующие ошибки:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/alfavit.exe : fatal error LNK1120: 1 unresolved externals

Как их лечить?



Код


 #include <iostream.h>
#include<stdio.h>
#include <string.h>

void selection(int* a, int m)

{ 
char b1[] = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
char b2[256];

int i,j,k,min;

   for(i=0;i<m-1;i++)
   {min=i;
   printf("vvedite");
   gets(b2);


for (j=i+1; j<m; j++)
    if(strcmp(b1, b2)>0) min=j;
        k=a[min];
        a[min]=a[i];
        a[i]=k;
   }
}




Автор: t_gran 8.12.2009, 04:49
Цитата

Как их лечить?

Вам же компилятор написал:
Цитата

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main


Вы функцию main где-то забыли. smile

Автор: atomlex 8.12.2009, 21:01
Спасибо, с теми ошибками разобрался.Компилируется.Но при вводе строки вылетает с ошибкой - "инструкция по адресу "00х000" обратилась к памяти по адресу"000х00.Память не может быть Read."

Код

#include <iostream.h>
#include<stdio.h>
#include <string.h>
 
 
 
void main(int* a, char m) 
{ 
 
 
char alf[] = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
char str[256];
 
char i,j,k,min;
 
   for(i=0;i<m-1;i++)
   {
           
           min=i;
   printf("vvedite:   ");
   gets(str);
 
 
for (j=i+1; j<m; j++)
    if(strcmp(alf, str)>0)
                puts("sortirovka   ");
                min=j;
                k=a[min];
                a[min]=a[i];
                a[i]=k;
   }
 
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)