Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Срочно, нужна помощь! из чисел в лат. буквы 
:(
    Опции темы
nana
Дата 25.12.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;
}


PM MAIL   Вверх
_hunter
Дата 26.12.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



изменить очень легко -- в том месте, где производится сравнение приводи латинскую букву к числу: (int)chr


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
nana
Дата 26.12.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Т.е заменить int на char? Но так не получается.
Или как-то иначе? smile

--------------------------------------------------------
ЗАРАНИЕ СПАСИБО!
PM MAIL   Вверх
_hunter
Дата 26.12.2005, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



не заменить, а сделать так, как я сказал.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
nana
Дата 26.12.2005, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Я не совсем тебя поненяла. Можешь объяснить попадробней? smile

----------------------------------
ЗАРАНИЕ СПАСИБО!
PM MAIL   Вверх
_hunter
Дата 26.12.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



что тут непонятного? береш код, меняеш типы массивов на char' ы ( не забыв о логике работы ), все...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
nana
Дата 26.12.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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

PM MAIL   Вверх
_hunter
Дата 26.12.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



значит не учла логику работы...
+ неплохо бы проверить что из файла прочиталось...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
nana
Дата 26.12.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.12.2005

Репутация: нет
Всего: нет



Но как?
PM MAIL   Вверх
_hunter
Дата 26.12.2005, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 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...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.