|
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 17
|
|
сортировка слиянием24.11.2010, 23:15. Показов 2019. Ответов 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
|
|
| 24.11.2010, 23:15 | |
|
Ответы с готовыми решениями:
5
Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
2 сортировки: пирамидальная сортировка и сортировка слиянием |
|
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
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
|
|
| 26.11.2010, 22:46 | |
|
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
|
|
| 29.11.2010, 00:28 | |
|
Помогаю со студенческими работами здесь
6
Шейкерная сортировка + сортировка слиянием Сортировка слиянием Сортировка слиянием c++ Сортировка слиянием
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|