Wyszukiwanie dwóch najmniejszych liczb i zamiana miejsc

0

Dzień Dobry
Mam za zadanie napisania programu, który m.in. zamienia miejscami dwóch wybranych elementów oraz wyświetlanie dwóch najmniejszych liczb razem z indeksem. Napisałam obie funkcje tylko działają nieprawidłowo. Czy ktoś mógłby mi podpowiedzieć co robię źle?

void minimum(float tablica[])
{
    float mini_1, mini_2;
    mini_1 = tablica[0];
    mini_2 = tablica[1];
    int indeks_mini_1 = 0;
    int indeks_mini_2 = 1;
    if (mini_1 > mini_2) {
        mini_1 = tablica[1];
        mini_2 = tablica[0];
        indeks_mini_1 = 1;
        indeks_mini_2 = 0;
    }
    for (int i = 0; i < ROZMIAR; i++) {

        if (tablica[i] < mini_2)
            mini_2 = tablica[i];
        indeks_mini_2 = i;

        if (mini_1 > mini_2 || mini_1 == mini_2) {
            mini_1 = tablica[i];
            mini_2 = tablica[1];
            indeks_mini_2 = 1;
            indeks_mini_1 = i;
        }

        int indeks_mini_1 = 0;
        int indeks_mini_2 = 1;
        for (int j = 1; j <= ROZMIAR; j++) {
            if (tablica[j] < tablica[indeks_mini_1])
                indeks_mini_1 = j;
            if (tablica[j] < tablica[indeks_mini_2])
                indeks_mini_2 = j;
        }
    }
    cout << "Element najmniejszy nr_1: " << mini_1 << endl;
    cout << "Index najmniejszego elementa nr_1: " << indeks_mini_1 << endl;
    cout << "Element najmniejszy nr_2: " << mini_2 << endl;
    cout << "\n\tIndex najmniejszego elementa nr_2: " << indeks_mini_2 << endl;
}
void zamiana(float tablica[])
{
    float a, b, c;
    cout << "Podaj pierwsza liczbe do zamiany: ";
    cin >> a;
    cout << "Podaj druga liczbe do zamiany: ";
    cin >> b;
    for (int i = 0; i < ROZMIAR; i++) {
        if (tablica[i] == a || tablica[i] == b) {
            for (int j = 0; j < ROZMIAR; j++) {
                if (tablica[j] == b && i != j || tablica[j] == a && i != j) {
                    c = tablica[j];
                    tablica[j] = tablica[i];
                    tablica[i] = c;
                }
            }
        }

        cout << tablica[i] << " ";
    }
}
    
 
1

potrzebujesz uzyc
http://en.cppreference.com/w/cpp/algorithm/swap
oraz
http://en.cppreference.com/w/cpp/algorithm/min_element
http://en.cppreference.com/w/cpp/algorithm/nth_element
albo
http://en.cppreference.com/w/cpp/algorithm/sort (albo parcial sort patrz komentarz)
a wtedy wziecie dwoch pierwszych elementow tablicy (ale indeksy sie roznica, takze nie wiem czy mozesz cos takiego zrobic)
albo googlowanie pod
"swap two elements in array c++"
"second smallest number c++ "

1

Jak mogą działać nieprawidłowo skoro nawet się nie kompilują? Proponuję najpierw wypisać na kartce słowami co program ma robić, a potem przenieść to do kodu. I korzystać z formattera http://format.krzaq.cc/, który od razu pokazuje gdzie kod wygląda podejrzanie.

2

Co to jest

for(int j=0i]==a)

Co TO jesT?

    for (int i = 0; i < ROZMIAR; i++) {
        if(tablica[];
    }

A co to jest?

        a=tablica[i;j<ROZMIAR;j++)
0

Nie wiem czemu coś się poprzestawiało ale już poprawiłam

1 użytkowników online, w tym zalogowanych: 0, gości: 1