sortowanie

Otrzymałeś(aś) rozwiązanie do zamieszczonego zadania? - podziękuj autorowi rozwiązania! Kliknij
Pawm32
Stały bywalec
Stały bywalec
Posty: 431
Rejestracja: 01 kwie 2020, 18:51
Podziękowania: 140 razy

sortowanie

Post autor: Pawm32 » 29 wrz 2020, 20:56

#include <iostream>

using namespace std;


void wczytaj ( double A[], int n)
{
for(int i=0 ; i<n ; i++)
{cout<<"A["<<i<<"]";
cin>>A;
}
}
void wyczytaj(double A[], int n )
{for(int i=0; i<n ; i++)
cout<<A<<'\t';
}
void sortuj ( double A[], int i)
{

for(int j=i-1; j>0; j--)
for(int i=0; i<j; i++)
if(A>A[i+1])
{
swap ( A, A[i+1]);
}
}



int main()
{
int i;
cin>>i;

double A;
wczytaj(A,i);
wyczytaj(A,i);
sortuj(A,i);
cout<<endl;
wyczytaj(A,i);


}
Jakim cudem to działa jak nie podałem mu n, funkcje wywołuj od i a takiej nie mam?????

DominekGo
Witam na forum
Witam na forum
Posty: 1
Rejestracja: 07 lip 2021, 13:30
Płeć:

Re: sortowanie

Post autor: DominekGo » 07 lip 2021, 14:59

Nie wiem co miałeś na myśli, pisząc, że program działa. Nie da się go nawet skompilować.
Program po poprawieniu wszystkich błędów prezentuje się następująco:

Kod: Zaznacz cały

#include <iostream>

using namespace std;


void wczytaj ( double A[], int n)
{
    for(int i = 0 ; i < n ; i++)
    {
        cout<<"A["<<i<<"]: ";
        cin>>A[i];
    }
}
void wyczytaj(double A[], int n )
{
    for(int i = 0; i < n ; i++)
        cout<<A[i]<<'\t';
}
void sortuj ( double A[], int i)
{

    for(int j = i-1; j > 0; j--)
        for(int i = 0; i < j; i++)
            if(A[i] > A[i+1])
            {
                swap ( A[i], A[i+1]);
            }
}



int main()
{
    int i;
    cin>>i;

    double A[i];
    wczytaj(A,i);
    wyczytaj(A,i);
    sortuj(A,i);
    cout<<endl;
    wyczytaj(A,i);


}
Przekazujesz tablicę do funkcji, więc musisz zadeklarować - no cóż - tablicę (o rozmiarze zmiennej i, gdzie i zostało wprowadzone przez użytkownika.
Zapis typu

Kod: Zaznacz cały

A>A[i+1]
jest całkowicie błędny. Zapamiętaj, kiedy odwołujesz się do tablicy, to zawsze musisz podać element, który masz na myśli.
Co do tego:
Jakim cudem to działa jak nie podałem mu n, funkcje wywołuj od i a takiej nie mam?????
Każda funkcja ma listę zmiennych/parametrów które jej podajesz (tuż po typie zwracanym i nazwie).
Jeżeli przekazujesz do funkcji wartość x to sama funkcja używa wartości x pod "swoją" nazwą, określoną w nagłówku.
Przykładowo:

Kod: Zaznacz cały

int funkcja(int y)
	{
		y = y + 1;
		return y;
	}
int main()
{
int x = 10;
funkcja(x);
}
Podajesz do funkcji liczbę całkowitą x (zwaną również parametrem faktycznym funkcji).
Jak widzisz funkcja podczas wykonywania bierze wartość x i "dopasowuje" do swojej listy argumentów (zwaną również parametrami formalnymi).
Tworzona jest kopia x, nowa liczba całkowita, pod nazwą y, która przyjmuje wartość x i jest używana przez funkcję.
Efektem końcowym jest, że y przyjmuje wartość 10, a funkcja zwraca wartość 11.