Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 17

сортировка слиянием

24.11.2010, 23:15. Показов 2042. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
программа должна выполнять сортировку строк слиянием с использованием указателей.

#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
FILE*out1,*out2,*out3;
void main()
{out1=fopen("text1.txt","r");
out2=fopen("text2.txt","r");
out3=fopen("text3.txt","w");
int i,j,m,kolstrA,kolstrB;
char in[80];
char an[80];
char*pa[100];
char*pb[100];
char*pc[100];
char a[100][80];
char b[100][80];
char c[200][80];

for (kolstrA=0;kolstrA<100;kolstrA++)
{if(fgets(in,81,out1)==NULL)
{break;};
in[80]='\0';
strncpy(a[kolstrA],in,80);};
fclose(out1);
for(kolstrB=0;kolstrB<100;kolstrB++)
{if(fgets(an,81,out2)==NULL)
{break;};
an[80]='\0';
strncpy(b[kolstrB],an,80);};
fclose(out2);


for(i=0;i<kolstrA;i++)
{pa[i]=a[i];};
for(j=0;j<kolstrB;j++)
{pb[j]=b[j];};

i=0;
j=0;
m=0;
do
{if(strncmp(pa[i],pb[j],80)<0)
{pc[m]=pa[i];
i=i+1;
m=m+1;}
else
{pc[m]=pb[j];
j=j+1;
m=m+1;};}
while(i<kolstrA||j<kolstrB);

while(j<kolstrB)
{pc[m]=pb[j];
j=j+1;
m=m+1;};
while(i<kolstrA)
{pc[m]=pa[i];
i=i+1;
m=m+1;};
cout<<"rezultat"<<"\n";
for(m=0;m<(kolstrA+kolstrB);m++)
{printf("%s\n",pc[m]);};
return;
}компилятор все выдает нормально, но запускаться прога не желает. В отладке выходит :
Необработанное исключение в "0x10264e35" в "sortstrsl.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc".
что это и как с этим бороться?

Добавлено через 1 час 23 минуты
хотя, кажется, это будет несколько иначе:
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
FILE*out1,*out2,*out3;
typedef char *pChar;
typedef char **ppChar;

void main()
{out1=fopen("text1.txt","r");
out2=fopen("text2.txt","r");
out3=fopen("text3.txt","w");
int i,j,m,kolstrA,kolstrB;
char in[80];
char an[80];
char*pa[100];
char*pb[100];
char*pc[100];
char a[100][80];
char b[100][80];
char c[200][80];

for (kolstrA=0;kolstrA<100;kolstrA++)
{if(fgets(in,81,out1)==NULL)
{break;};
in[80]='\0';
strncpy(a[kolstrA],in,80);};
fclose(out1);
for(kolstrB=0;kolstrB<100;kolstrB++)
{if(fgets(an,81,out2)==NULL)
{break;};
an[80]='\0';
strncpy(b[kolstrB],an,80);};
fclose(out2);


for(i=0;i<kolstrA;i++)
{pa[i]=in[i];};
for(j=0;j<kolstrB;j++)
{pb[j]=an[j];};

i=0;
j=0;
m=0;
do
{if(strncmp(pa[i],pb[j],80)<0)
{pc[m]=pa[i];
i=i+1;
m=m+1;}
else
{pc[m]=pb[j];
j=j+1;
m=m+1;};}
while(i<kolstrA||j<kolstrB);

while(j<kolstrB)
{pc[m]=pb[j];
j=j+1;
m=m+1;};
while(i<kolstrA)
{pc[m]=pa[i];
i=i+1;
m=m+1;};
cout<<"rezultat"<<"\n";
for(m=0;m<(kolstrA+kolstrB);m++)
{printf("%s\n",pc[m]);};
return;
}


но тогда error C2440: =: невозможно преобразовать 'char' в 'char *'
Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции.
как это исправить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2010, 23:15
Ответы с готовыми решениями:

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая Сортировка&quot;: у быстрой...

2 сортировки: пирамидальная сортировка и сортировка слиянием
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель качества сортировки (количество операций, т.е....

5
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
24.11.2010, 23:21
Попробуй так:

#include<iostream>#include<string.h>#inc lude<conio.h>#include<stdio.h>#include<s tdlib.h>using namespace std;FILE*out1,*out2,*out3;typedef char *pChar;typedef char **ppChar;void main(){out1=fopen("text1.txt","r");out2= fopen("text2.txt","r");out3=fopen("text3 .txt","w");int i,j,m,kolstrA,kolstrB;char in[80];char an[80];char*pa[100];char*pb[100];char*pc[100];char a[100][80];char b[100][80];char c[200][80];for (kolstrA=0;kolstrA<100;kolstrA++){if(fge ts(in,81,out1)==NULL){break;};in[80]='\0';strncpy(a[kolstrA],in,80);};fclose(out1);for(kolstrB=0;kol strB<100;kolstrB++){if(fgets(an,81,out2) ==NULL){break;};an[80]='\0';strncpy(b[kolstrB],an,80);};fclose(out2);for(i=0;i<kolstrA ;i++){pa[i]=in[i];};for(j=0;j<kolstrB;j++){pb[j]=an[j];};i=0;j=0;m=0;do{if(strncmp(pa[i],pb[j],80)<0){pc[m]=pa[i];i=i+1;m=m+1;}else{pc[m]=pb[j];j=j+1;m=m+1;};}while(i<kolstrA||j<kolst rB);while(j<kolstrB){pc[m]=pb[j];j=j+1;m=m+1;};while(i<kolstrA){pc[m]=pa[i];i=i+1;m=m+1;};cout<<"rezultat"<<"\n";fo r(m=0;m<(kolstrA+kolstrB);m++){printf("% s\n",pc[m]);};return;}
0
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 17
26.11.2010, 22:41  [ТС]
теперь пишет
error C2440: =: невозможно преобразовать 'char' в 'char *'
Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
а как сделать это приведение, я не знаю
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
26.11.2010, 22:46
http://www.algolist.manual.ru/sort/merge_sort.php
0
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 17
27.11.2010, 00:04  [ТС]
Если массив числовой, то там все проще, ибо нет преобразований типов. А проблема именно в этом.

Добавлено через 2 минуты
К тому же по данной ссылке программа с классами, а мне надо без них.
0
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 17
29.11.2010, 00:28  [ТС]
Никто не может помочь? проблема, судя по всему, в указателях.

Добавлено через 4 минуты
П.С. структуры и классы не предлагать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.11.2010, 00:28
Помогаю со студенческими работами здесь

Шейкерная сортировка + сортировка слиянием
вот часть когда,которая выполняет шейкерную сортировку : для символьного и целочисленого массива . // ConsoleApplication15.cpp:...

Сортировка слиянием
Нужен самый примитивный рабочий код желательно с комментарием. Спасибо

Сортировка слиянием c++
Необходимо слить 2 упорядоченных по не возрастанию списка в один, так же упорядоченный по не возрастанию , построив новый список. с++ ...

Сортировка слиянием
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; void Merge_Sort(int * a,int left, int right) { if (left &lt;...

Сортировка слиянием
Всем доброго время суток, дана задача: Требуется упорядочить элементы некоторого массива целых чисел, который следует упорядочить по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru