1

Тема: Не можу виправити помилку

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include<clocale>
#include<string.h>
using namespace std;



int main()
{
//Setlocale(LC_ALL,”Russian”);
    const  int   N=100;
    const int  D=30;
char s1[N];
char s2[5];
char p; 
int k=0,sl=0;
int d=0;
bool inslove=false;
int   Mas [N][2]={0};
gets(s1);
puts(s1);
 d=strlen(s1);
 cout<<"dlinna= "<<d<<endl;
    for(int i=0;i<D;i++)
    {
        if(s1[i]!='.')
        {
            if(s1[i]!=' ')
                {
                if(!inslove) 
                    {
                    inslove=true;
                    Mas[sl][0]=i;
                    }
                 k++;
                cout<<s1[i];
                }
            else 
                if(inslove )
                    {
                    inslove=false;
                    cout<<endl<<k;
                    cout<<endl;
                    Mas[sl][1]=k;
                    k=0;
                    sl++;
                    }
        }
        else 
            if(inslove )
                    {
                    inslove=false;
                    cout<<endl<<k;
                    cout<<endl;
                    Mas[sl][1]=k;
                    k=0;
                    sl++;
                    }
            else break;
    }
    cout<<endl<<"kol slov= "<<sl;
    cout<<endl;
    for(int i=0;i<14;i++)
        {
            for(int j=0;j<2;j++)
                {
                cout<<Mas[i][j]<<" ";
                }
        cout<<endl;
        }
int min; 
int i_min=0;
if(sl!=0) min= Mas[0][1];
else cout<<"not slov";

for(int i=0;i<sl;i++)
        {
            if(min>Mas[i][1])
                {
                    min= Mas[i][1];
                    i_min=i;
                }
        }
char *slovo_min;
char * sl_1,*sl_2;  //char sl_1[10];
int x=0,y=0,z=0;
strncpy(slovo_min,s1[Mas[i_min][0]], Mas[i_min][1]);
x=strlen(slovo_min);
if(x%2) y=x-1;
else y=x;
z=y/2;
strncpy(sl_1, slovo_min,z);
strncpy(sl_2, slovo_min[z],z);
cout<< sl_1;
cout<< sl_2;


    _getch();
    return 0;
}

    6    IntelliSense: аргумент типа "char" несовместим с параметром типа "const char *"    c:\users\givshuk\documents\visual studio 2010\projects\26-27\26-27\26-27.cpp    95    15    26-27
Ошибка    4    error C2661: strcpy: нет перегруженной функции, принимающей 3 аргументов    c:\users\givshuk\documents\visual studio 2010\projects\26-27\26-27\26-27.cpp    95    1    26-27

2

Re: Не можу виправити помилку

А як це ви таку програму написали, а прості слова типу

strcpy: нет перегруженной функции, принимающей 3 аргументов

не розумієте?

3

Re: Не можу виправити помилку

reywwe95, у когось із нас одруківка: або у вас у коді/описі помилки, або у мене в очах двоїться.
Де по коду є взагалі виклик strcpy? Я бачу лише strncpy().

4

Re: Не можу виправити помилку

strncpy: нет перегруженной функции, принимающей 3 аргументов  виправте   дійсно не  можу  знайти помилку   так   там  strncpy я одрукувався

5

Re: Не можу виправити помилку

char *slovo_min;
char * sl_1,*sl_2;  //char sl_1[10];
int x=0,y=0,z=0;
strncpy(slovo_min,s1[Mas[i_min][0]], Mas[i_min][1]);
x=strlen(slovo_min);
if(x%2) y=x-1;
else y=x;
z=y/2;
strncpy(sl_1, slovo_min,z);
strncpy(sl_2, slovo_min[z],z);

По-перше: динамічні масиви треба створювати вручну, тобто

char *slovo_min = new char[SIZE];

інакше колись програма впаде і доставить вам не одну годину бубнових плясок.
А опісля використання пам'ять очищувати треба:

delete slovo_min;

По-друге:

strncpy(sl_2, slovo_min[z],z);

Компілятор лається на другий параметр, бо бачить там, по факту, символ, а не рядок. Якщо вам треба витягти підрядок, що починається з позиції z і має довжину z, то

strncpy(sl_2, &slovo_min[z],z);

6

Re: Не можу виправити помилку

Ошибка    2    error C2664: strncpy: невозможно преобразовать параметр 2 из "char" в "const char *"   
    3    IntelliSense: аргумент типа "char" несовместим с параметром типа "const char *
strncpy(slovo_min,s1[Mas[i_min][0]], Mas[i_min][1]);  не  розумію    що нетак

7

Re: Не можу виправити помилку

reywwe95 написав:

Ошибка    2    error C2664: strncpy: невозможно преобразовать параметр 2 из "char" в "const char *"   
    3    IntelliSense: аргумент типа "char" несовместим с параметром типа "const char *
strncpy(slovo_min,s1[Mas[i_min][0]], Mas[i_min][1]);  не  розумію    що нетак

Ті ж граблі, тільки в іншому місці.

&s1[Mas[i_min][0]]

8

Re: Не можу виправити помилку

Велике   спасибі   за поради ))

9

Re: Не можу виправити помилку

Раджу вам ще почитати літературу і, зокрема, цю тему.