N
Nstudent
помогите найти ошибку
само задание-два массива строк, каждый из них чортируется методом пузырька, а затем оба в один-слиянием.
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef char *pChar;
typedef char **ppChar;
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,n,kolstrA,kolstrB;
char in[80];
char an[80];
char*pa[100];
char*pb[100];
char*pc[100];
char*pk[100];
char a[100][80];
char b[100][80];
char c[200][80];
for (kolstrA=0;kolstrA<100;kolstrA++)
{if(fgets(in,80,out1)==NULL)
{break;};
in[80]='\0';
strncpy(a[kolstrA],in,80);};
fclose(out1);
for(kolstrB=0;kolstrB<100;kolstrB++)
{if(fgets(an,80,out2)==NULL)
{break;};
an[80]='\0';
strncpy(b[kolstrB],an,80);};
fclose(out2);
for(i=0;i<=kolstrA;i++)
{pa=a;};
for(j=0;j<=kolstrB;j++)
{pb[j]=b[j];};
for(m=0;m<=(kolstrA+kolstrB);m++)
{pc[m]=c[m];};
i=0;
j=0;
m=0;
for(i=0;i<=kolstrA-2;i++)
for(j=i+1;j<=kolstrA-1;j++)
{if(strcmp(pa,pa[j])<0)
{strcpy(pk,pa);
strcpy(pa,pa[j]);
strcpy(pa[j],pk);};};
for(i=0;i<=kolstrB-2;i++)
for(j=i+1;j<=kolstrB-1;j++)
{if(strcmp(pb,pb[j])<0)
{strcpy(pk,pb);
strcpy(pb,pb[j]);
strcpy(pb[j],pk);};};
do
{if(strcmp(pa,pb[j])<0)
{pc[m]=pa;
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+1;
m=m+1;};
cout<<"rezultat"<<"\n";
for(m=0;m<(kolstrA+kolstrB);m++)
{printf("%s\n",pc[m]);};
return;
}
выводит:
error C2664: strcpy: невозможно преобразовать параметр 2 из 'char *[100]' в 'const char *'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
само задание-два массива строк, каждый из них чортируется методом пузырька, а затем оба в один-слиянием.
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef char *pChar;
typedef char **ppChar;
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,n,kolstrA,kolstrB;
char in[80];
char an[80];
char*pa[100];
char*pb[100];
char*pc[100];
char*pk[100];
char a[100][80];
char b[100][80];
char c[200][80];
for (kolstrA=0;kolstrA<100;kolstrA++)
{if(fgets(in,80,out1)==NULL)
{break;};
in[80]='\0';
strncpy(a[kolstrA],in,80);};
fclose(out1);
for(kolstrB=0;kolstrB<100;kolstrB++)
{if(fgets(an,80,out2)==NULL)
{break;};
an[80]='\0';
strncpy(b[kolstrB],an,80);};
fclose(out2);
for(i=0;i<=kolstrA;i++)
{pa=a;};
for(j=0;j<=kolstrB;j++)
{pb[j]=b[j];};
for(m=0;m<=(kolstrA+kolstrB);m++)
{pc[m]=c[m];};
i=0;
j=0;
m=0;
for(i=0;i<=kolstrA-2;i++)
for(j=i+1;j<=kolstrA-1;j++)
{if(strcmp(pa,pa[j])<0)
{strcpy(pk,pa);
strcpy(pa,pa[j]);
strcpy(pa[j],pk);};};
for(i=0;i<=kolstrB-2;i++)
for(j=i+1;j<=kolstrB-1;j++)
{if(strcmp(pb,pb[j])<0)
{strcpy(pk,pb);
strcpy(pb,pb[j]);
strcpy(pb[j],pk);};};
do
{if(strcmp(pa,pb[j])<0)
{pc[m]=pa;
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+1;
m=m+1;};
cout<<"rezultat"<<"\n";
for(m=0;m<(kolstrA+kolstrB);m++)
{printf("%s\n",pc[m]);};
return;
}
выводит:
error C2664: strcpy: невозможно преобразовать параметр 2 из 'char *[100]' в 'const char *'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции