• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pydanie odnośnie deklarowania funkcji c++

Object Storage Arubacloud
+1 głos
507 wizyt
pytanie zadane 16 lutego 2022 w C i C++ przez polandonion Mądrala (7,040 p.)

Witam Państwa,

Mam pytanie odnośnie deklarowania funkcji; czy można deklarować funkcję tak:

void _scal(int l,int sr,int p)

zamiast tak:

void _scal(int tab[],int l,int sr,int p)

jeżeli tablica tab jest zmienną globalną?

Według mnie raczej tak, nauczyciel mówi, żeby pisać ten drugi sposób.

Tutaj cały kod programu:

#include<bits/stdc++.h>
using namespace std;
int tab[100000],pom[1000000];
void _scal(int l,int sr,int p){
	int i1=l,i2=sr+1;
	for(int i=l; i<=p; i++){
		if(i1>sr or (i2<=p and tab[i2]<tab[i1]))
			pom[i]=tab[i2++];
		else
			pom[i]=tab[i1++];
	}
	for(int i=l; i<=p; i++)
		tab[i]=pom[i];
}
void _sort(int l,int p){
	if(l==p)
		return;
	int sr=(p+l)/2;
	_sort(l,sr);
	_sort(sr+1,p);
	_scal(l,sr,p);
}
int main(){
	int n; cin>>n;
	for(int i=0; i<n; i++)
		cin>>tab[i];
	_sort(0,n-1);
	for(int i=0; i<n; i++)
		cout<<tab[i]<<" ";
}

 

komentarz 16 lutego 2022 przez Oscar Nałogowiec (29,320 p.)
Najlepiej jak funkcja jest "czysta"/"bezkontekstowa", czyli operuje jedynie na parametrach i zmiennych lokalnych. Wtedy jest bezpieczna w różnych sposobach jej użycia: można ją wołać w wątkach, w jakiejś rekurencji itp. No i prościej taką funkcję opisać i wydzielić z programu do jakiejś biblioteki.

1 odpowiedź

+3 głosów
odpowiedź 16 lutego 2022 przez TOM_CPP Pasjonat (22,640 p.)
wybrane 16 lutego 2022 przez polandonion
 
Najlepsza

Nie używaj tablic globalnych. W wywołaniu funkcji _sort zawsze powinno podać się tablice, którą należy posortować.

W algorytmie warto także zastosować tablice dynamicznych, które można dostosować do wielkości sortowanych danych. Poniżej przykład sortowania typu quick sort.

#include <iostream>
#include <vector>

using namespace std;

void _sort( vector<int>& data , size_t left , size_t right )
{
    if( right <= left ) return;
	
	size_t i {left - 1}, j  {right + 1};
    int pivot {data[(left+right)/2]}; 
	
	while(true)
	{	        
		while( pivot>data[++i] );
	    while( pivot<data[--j] );
		
		if( i <= j ) swap(data[i],data[j]);
        else break;
	}

	if( j > left  ) _sort(data, left, j);
	if( i < right ) _sort(data, i, right);
}

void sort( vector<int>& data )
{
    _sort( data , 0 , data.size()-1 );
}

int main()
{
    vector<int> data {3,-67,9,76,5463,-99,0,-12,75};
       
    sort(data);
    
    for( const auto& element : data ) cout << element << " ";
}

 

komentarz 16 lutego 2022 przez NewEraOfPeace Gaduła (4,790 p.)
Wszystkie identyfikatory w globalnej przestrzeni nazw z underscorem jako pierwszy znak są zarezerwowane, a `sort` to dość popularna nazwa

Podobne pytania

+2 głosów
3 odpowiedzi 270 wizyt
pytanie zadane 6 grudnia 2015 w C i C++ przez evelynn Nowicjusz (140 p.)
0 głosów
1 odpowiedź 462 wizyt
0 głosów
2 odpowiedzi 844 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...