C++ :: Aufgabe #286
2 Lösungen
Anzahl an Nachbar-Dupletten in einem Array
Anfänger - C++
von thunderbird
- 28.04.2020 um 09:38 Uhr
Es sollen die Anzahl von den Nachbar-Dubletten eines Zahlen-Arrays ermittelt werden. Die Nachbar-Dubletten sind gleiche benachbarte Zahlen in einem Array.
Es soll außerdem auf folgendes geachtet werden: Die Nachbar-Dubletten sind genau nur für zwei benachbarte Mitglieder definiert - sollte ein drittes Mitglied dabei benachbart sein, wird es nicht mitgezählt, weil es noch einen gleichen Nachbar braucht.
Beispiel:
Array = [3,3,7] : Ausgabe = 1
Array = [3,3,3] : Ausgabe = 1 (Mitglieder von Index 0 und 1 sind benachbart, Index 2 braucht auch ein Nachbar aber hat keinen)
Array = [3,3,3,3] : Ausgabe = 2
Array = [0, 3, 3, 3, 2, 7, 7, 7, 7, 3, 2, 1, 1, -2, 4, 4, 8, 9, 8, 6 ] : Ausgabe = 5
Zusatzanforderungen:
- Unter 30 Zeilen Code
- Variable Länge der Arrays
- Alle reellen Zahlen werden akzeptiert
Es soll außerdem auf folgendes geachtet werden: Die Nachbar-Dubletten sind genau nur für zwei benachbarte Mitglieder definiert - sollte ein drittes Mitglied dabei benachbart sein, wird es nicht mitgezählt, weil es noch einen gleichen Nachbar braucht.
Beispiel:
Array = [3,3,7] : Ausgabe = 1
Array = [3,3,3] : Ausgabe = 1 (Mitglieder von Index 0 und 1 sind benachbart, Index 2 braucht auch ein Nachbar aber hat keinen)
Array = [3,3,3,3] : Ausgabe = 2
Array = [0, 3, 3, 3, 2, 7, 7, 7, 7, 3, 2, 1, 1, -2, 4, 4, 8, 9, 8, 6 ] : Ausgabe = 5
Zusatzanforderungen:
- Unter 30 Zeilen Code
- Variable Länge der Arrays
- Alle reellen Zahlen werden akzeptiert
Lösungen:
#include <iostream>
using namespace std;
int main()
{
double a[] = {3, 3, 3, 1, 1, 9, 8, 9};
int dubletten = 0;
for(int i = 0; i<(sizeof(a)/sizeof(*a)-1); i++)
{
if(a[i] == a[i+1])
{
dubletten++;
i++;
}
}
cout<< dubletten<< endl;
return 0;
}
C++ 17
C-Code
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v{ 0, 3, 3, 3, 2, 7, 7, 7, 7, 3, 2, 1, 1, -2, 4, 4, 8, 9, 6, 6 };
int counter = 0;
for (int i = 0; i < v.size(); i++)
{
auto pos = search_n(v.begin() + i, v.end(), 2, v[i]);
if (pos - v.begin() != v.size()) {
counter++;
i++;
}
}
cout << "Anzahl Doubletten: " << counter << endl;;
}
