C++ :: Aufgabe #334 :: Lösung #1

2 Lösungen Lösungen öffentlich
#334

Produkt der Werte eines Arrays

Fortgeschrittener - C++ von JKooP - 21.02.2021 um 12:15 Uhr
Gegeben ist ein Array bestehend aus Integer-Werten. Aus diesen Werten soll das Produkt errechnet werden,
aber immer ausgenommen der Zahl, welche sich an der Stelle des Durchlaufs befindet.
Ist die letzte Stelle erreicht, geht’s von vorne weiter (Umlauf).

Beispiel:
Array = {1, 2, 3, 4}

Lösung:
Array = {24, 12, 8, 6}

Erklärung:
1. Durchlauf: 2 * 3 * 4 = 24 (ohne 1)
2. Durchlauf: 3* 4 * 1 = 12 (ohne 2)
3. Durchlauf: 4 * 1 * 2 = 8 (ohne 3)
4. Durchlauf: 1 * 2 * 3 = 6 (ohne 4)

Schreibe eine Funktion/Methode, mit der ein Array aus Integer-Werten aufgenommen werden kann und die Produkte als Integer-Array zurückgegen werden.

1. Aufgabe (leicht):
Verschachteln mehrerer Schleifen

2. Aufgabe (schwieriger):
das Ganze mit nur einem Schleifendurchlauf realisieren

Statt Arrays können, je nach Programmiersprache und Vorliebe, natürlich auch Listen oder Vektoren verwendet werden.

Viel Spaß
#1
vote_ok
von felixTheC (1200 Punkte) - 04.03.2021 um 13:21 Uhr
Quellcode ausblenden C-Code
#include <iostream>
#include <vector>

using std::vector;
using std::cout;
using std::endl;

vector<int> * prodArray(vector<int> &array);
void printArray(vector<int> &array);

int main()
{
    vector<int> arr = {1, 2, 3, 4};
    printArray(arr);

    vector<int> *result = prodArray(arr);
    printArray(*result);

    return 0;
}

void printArray(vector<int> &array)
{
    cout << '{';
    for (auto val = array.begin(); val != array.end(); ++val)
    {
        cout << *val;
        if(val != --array.end())
            cout << ',';
    }
    cout << '}' << endl;
}

vector<int> * prodArray(vector<int> &array)
{
    vector<int> *resultArray = new vector<int>;

    for (auto elem : array)
    {
        int result = 1;
        for (auto val : array)
        {
            if (elem != val)
            {
                result *= val;
            }
        }
        resultArray->push_back(result);
    }

    return resultArray;

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2106904

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.