1

Тема: Функції

#include "stdafx.h"
#include<conio.h>
#include <iostream>
#include <string>
#include<clocale>
using namespace std;
int kol(const int*M,const int size,int c)
{int  k=0;
    for(int i=0;i<size;i++)
    {
        if(M[i]>c)
            k++;
    }
return k;
}
int product(const int*M,const int size)
{int p=1, max=0,i_max=0;
    for(int i=0;i<size;i++)
    {
        if(max<abs(M[i]))
        {
            max=abs(M[i]);
        i_max=i;
        }
    }
    for(int i=i_max+1;i<size;i++)
    {

        p=p*M[i];

}
return p;
}
int  main ()
{
    int n,c,kk=0;
    int pp=1,max=0,i_max=0;
     int neg_k=0,poz_k=0;
    int *mas;
    int *m_neg;
    int *m_poz;
    int k,l;
    setlocale(LC_ALL,"Russian");
    cout<<"Введите  размерность  масива "<<endl;
    cin>>n;
    mas=new int [n];
    cout<<"Введите  элементы  масива "<<endl;
    for(int i=0;i<n;i++)
        cin>>mas[i];
    for(int i=0;i<n;i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    cout<<"Введите с="<<endl;
    cin>>c;
    cout<<"C="<<c<<endl;
    kk=kol(mas,n,c);
    cout<<"Количество элементов  больше  с="<<kk<<endl;

    
    
    pp=product(mas,n);
cout<<"произведение  элементов  масива  после  мах= "<<pp<<endl;
m_neg=new int [n];
m_poz=new int [n];
for(int i=0,k=0,l=0;i<n;i++)
{
    if(mas[i]<0)
    {
    m_neg[k]=mas[i];
    neg_k++;
    k++;
    }
        else
        {
        m_poz[l]=mas[i];
        poz_k++;
        l++;
        }
}
for( k=0;k<neg_k;k++)
{
    mas[k]=m_neg[k];
}
for(int i=0;i<poz_k;i++)
{
    mas[k]=m_poz[i];

    k++;

}
cout<<endl;
    for(int i=0;i<n;i++)
        cout<<mas[i]<<" ";


   getch();
    return 0;

}
m_neg=new int [n];
m_poz=new int [n];
for(int i=0,k=0,l=0;i<n;i++)
{
    if(mas[i]<0)
    {
    m_neg[k]=mas[i];
    neg_k++;
    k++;
    }
        else
        {
        m_poz[l]=mas[i];
        poz_k++;
        l++;
        }
}
for( k=0;k<neg_k;k++)
{
    mas[k]=m_neg[k];
}
for(int i=0;i<poz_k;i++)
{
    mas[k]=m_poz[i];

    k++;

}

підскажіть  як    цю частину   пертворити в  функцію

Re: Функції

Для того, щоб створити функцію та вписати в неї код:

тип_який повертає_функція назва_функції(список_параметрів)
{
 тіло_функції
}

Приклад:
Треба створити функцію, якій передається число, вона доплюсовує до цього числа 2, та повертає це число.

int sum(int number)
{
 number = number + 2;
 return number;
}

3 Востаннє редагувалося Адріян Ігорович (02.04.2013 19:00:47)

Re: Функції

У вашому випадку це буде так:

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

    void myFunction()
    {
    m_neg=new int [n];
    m_poz=new int [n];
    for(int i=0,k=0,l=0;i<n;i++)
    {
    if(mas[i]<0)
    {
    m_neg[k]=mas[i];
    neg_k++;
    k++;
    }
    else
    {
    m_poz[l]=mas[i];
    poz_k++;
    l++;
    }
    }
    for( k=0;k<neg_k;k++)
    {
    mas[k]=m_neg[k];
    }
    for(int i=0;i<poz_k;i++)
    {
    mas[k]=m_poz[i];
     
    k++;
     
    }
     }
    int kol(const int*M,const int size,int c)
    {int k=0;
    for(int i=0;i<size;i++)
    {
    if(M[i]>c)
    k++;
    }
    return k;
    }
    int product(const int*M,const int size)
    {int p=1, max=0,i_max=0;
    for(int i=0;i<size;i++)
    {
    if(max<abs(M[i]))
    {
    max=abs(M[i]);
    i_max=i;
    }
    }
    for(int i=i_max+1;i<size;i++)
    {
     
    p=p*M[i];
     
    }
    return p;
    }
    int main ()
    {
    int n,c,kk=0;
    int pp=1,max=0,i_max=0;
    int neg_k=0,poz_k=0;
    int *mas;
    int *m_neg;
    int *m_poz;
    int k,l;
    setlocale(LC_ALL,"Russian");
    cout<<"Введите размерность масива "<<endl;
    cin>>n;
    mas=new int [n];
    cout<<"Введите элементы масива "<<endl;
    for(int i=0;i<n;i++)
    cin>>mas[i];
    for(int i=0;i<n;i++)
    cout<<mas[i]<<" ";
    cout<<endl;
    cout<<"Введите с="<<endl;
    cin>>c;
    cout<<"C="<<c<<endl;
    kk=kol(mas,n,c);
    cout<<"Количество элементов больше с="<<kk<<endl;
     
    pp=product(mas,n);
    cout<<"произведение элементов масива после мах= "<<pp<<endl;
    myFunction();
    cout<<endl;
    for(int i=0;i<n;i++)
    cout<<mas[i]<<" ";
     
     
    getch();
    return 0;
     
    }

Але наперед кажу, що такий приклад може не запрацювати, оскільки деякі змінні, що використовуються
у myFunction є локальними, тому треба переробити їх на глобальні(так не варто робити, поганий стиль), а кращим
варіантом, є передавання потрібних даних функції через параметри.

4

Re: Функції

#include "StdAfx.h"
#include<conio.h>
#include <iostream>
#include <string>
#include<clocale>
using namespace std;
int kol(const int*M,const int size,int c)
{int  k=0;
    for(int i=0;i<size;i++)
    {
        if(M[i]>c)
            k++;
    }
return k;
}
int product(const int*M,const int size)
{int p=1, max=0,i_max=0;
    for(int i=0;i<size;i++)
    {
        if(max<abs(M[i]))
        {
            max=abs(M[i]);
        i_max=i;
        }
    }
    for(int i=i_max+1;i<size;i++)
    {

        p=p*M[i];

}
return p;
}
 void myFunction()
{

int neg_k=0,poz_k=0;
    int *m_neg;
    int *m_poz;
    int *M;
    int n;
          m_neg=new int [n];
m_poz=new int [n];
    int k,l;
for(int i=0,k=0,l=0;i<n;i++)
{
    if(M[i]<0)
    {
    m_neg[k]=M[i];
    neg_k++;
    k++;
    }
        else
        {
        m_poz[l]=M[i];
        poz_k++;
        l++;
        }
}
for( k=0;k<neg_k;k++)
{
    M[k]=m_neg[k];
}
for(int i=0;i<poz_k;i++)
{
    M[k]=m_poz[i];

    k++;

}



    
 }
int  main ()
{
    int n,c,kk=0;
    int pp=1,max=0,i_max=0;
     
    int *mas;
    
    
    
    setlocale(LC_ALL,"Russian");
    cout<<"Введите  размерность  масива "<<endl;
    cin>>n;
    mas=new int [n];
    cout<<"Введите  элементы  масива "<<endl;
    for(int i=0;i<n;i++)
        cin>>mas[i];
    for(int i=0;i<n;i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    cout<<"Введите с="<<endl;
    cin>>c;
    cout<<"C="<<c<<endl;
    kk=kol(mas,n,c);
    cout<<"Количество элементов  больше  с="<<kk<<endl;

    
    
    pp=product(mas,n);
cout<<"произведение  элементов  масива  после  мах= "<<pp<<endl;

myFunction();
cout<<endl;

    for(int i=0;i<n;i++)
        cout<<mas[i]<<" ";


   getch();
    return 0;

}


Run-Time Check Failure #3 - The variable 'n' is being used without being initialized. 

5

Re: Функції

reywwe95, ви про це? :)

int n;
m_neg=new int [n];
З.І:
А код варто трошки причепурити: відступи та відсутність вирівнювання не надихають читати код...
I belong to the Dead Generation.

6

Re: Функції

ага

7

Re: Функції

Ну то які питання?
Змінна n неініціалізована перед використанням. Її або ввести, або задати, або (якщо вона для всіх функцій спільна) винести глобально.

I belong to the Dead Generation.

8

Re: Функції

можна приклад

9

Re: Функції

reywwe95 написав:

можна приклад

Та у вас же в у коді далі, в іншій функції:

cout<<"Введите  размерность  масива "<<endl;
    cin>>n;
    mas=new int [n];
I belong to the Dead Generation.

10

Re: Функції

int n;
    m_neg=new int [n];   инциализировал   і програма компілюється                можете  виправити помилку

11

Re: Функції

кажись  зрозумів але  як  в  функтцію  передати розмір  масиву  n