![]() |
|
|
![]()
|
|
| nana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2005 Репутация: нет Всего: нет |
ПОЖАЛУСТА, ПОМОГИТЕ!
как изменить программу, чтобы в текстовом файле сортировались латинские буквы, а не числа? ------------------------- #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<fstream> # include <algorithm> #include<windows.h> char bufRus[256]; char*Rus(const char* text){ CharToOem(text,bufRus); return bufRus; } int srav=0,peres=0;// //сортировка вставками void sift1(int root,int last,int* mas){ int j1,j2,found,i,j,copy; copy=mas[root-1]; peres++; i=root; found=0; while(!found) {j1=2*i; j2=j1+1; srav++; if(j1>last)found=1; else {srav++; if(j1==last)j=j1; else {j=(mas[j1-1]>=mas[j2-1])?j1:j2; peres++; } srav++; if(mas[j-1]<=copy)found=1; else {mas[i-1]=mas[j-1]; peres++; i=j; } } } mas[i-1]=copy; peres++; return; } void treesort1(int* mas,int n) {int temproot,templast,tempcopy; for(temproot=n/2;temproot>0;temproot--)sift1(temproot,n,mas); for(templast=n;templast>=2;templast--) {tempcopy=mas[0]; mas[0]=mas[templast-1]; mas[templast-1]=tempcopy; peres+=3; sift1(1,templast-1,mas); } return; } //--------------------------------------------- //--------------------------------------------- int main(void) { int m=0,a,b,i,n=0,sr,copy; char filein[30],k[1000]; cout<<Rus("Введите имя входного файла:"); cin>>filein; ifstream ifs(filein); if(!ifs){cout<<Rus("Такого файла нет!");getch();return 1;} while(ifs)ifs.read(k,1000); for(a=0;a<int(strlen(k));a++) {if(strncmp(&k[a],"\n",1)==0){n++;m=1;} else if(strncmp(&k[a]," ",1)==0)m++; } n++; int *ss=new int[n*m]; int *sss=new int[n*m]; int **mas=new int*[n]; for(a=0;a<n;a++)mas[a]=new int[m]; FILE *file; file=fopen(filein,"r"); cout<<Rus("Исходная матрица:")<<endl; for(a=0;a<n;a++) {for(b=0;b<m;b++) { fscanf(file,"%i",&mas[a][b]);cout<<mas[a][b]<<" "; } cout<<endl; } fclose(file); peres=srav=0; cout<<Rus("\nСортировка вставками:"); for(a=0;a<m;a++) {sr=1; while(sr<n){ copy=mas[a][sr];peres++; for(b=0;b<sr;b++){ if(copy<mas[a][b]){ for(i=sr;i>b;i--){ mas[a][i]=mas[a][i-1]; peres++; } mas[a][b]=copy; peres++; srav++; break; } srav++; } sr++; } } cout<<endl; for(a=0;a<n;a++){ for(b=0;b<m;b++) { cout<<mas[a][b]<<" "; } cout<<endl; } cout<<Rus("\nЧисло сравнений=")<<srav; cout<<Rus("\nЧисло пересылок=")<<peres; getch(); return 0; } |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
изменить очень легко -- в том месте, где производится сравнение приводи латинскую букву к числу: (int)chr
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| nana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2005 Репутация: нет Всего: нет |
Т.е заменить int на char? Но так не получается.
Или как-то иначе? -------------------------------------------------------- ЗАРАНИЕ СПАСИБО! |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
не заменить, а сделать так, как я сказал.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| nana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2005 Репутация: нет Всего: нет |
Я не совсем тебя поненяла. Можешь объяснить попадробней?
---------------------------------- ЗАРАНИЕ СПАСИБО! |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
что тут непонятного? береш код, меняеш типы массивов на char' ы ( не забыв о логике работы ), все...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| nana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2005 Репутация: нет Всего: нет |
Я так делала - вот что получаеся вместо отсортированных букв:
Исходные: a j b t g y a j k f a v Отсортированные: ( Y V 2 ( Y V 2 ( Y V 2 |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
значит не учла логику работы...
+ неплохо бы проверить что из файла прочиталось... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| nana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.12.2005 Репутация: нет Всего: нет |
Но как?
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
что "но как?"?
логику учесть? так на пальцах этого не объясниш ( это вам на лекциях пол-года пытались сделать ) посмотреть что в массив считалось? если отладчикои пользоваться ( и watch-и добавлять ) не умеем... тогда после чтения массива пишем что-то типа: char chr1 = array[0]; char chr2 = array[1]; char chr3 = array[2]; ... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |