Wie kann man 2 Array verschmelzen?
-
Du brauchst die Arrays nicht zu verschmelzen, einfach nur abwechselnd in einer Schleife ausgeben und natürlich vor der Ausgabe prüfen, ob sich eine Zahl im Array befindet.
-
Hallo nata,
ich nehme an, dass Du damit
#include <iterator> #include <iostream> template< typename I1, typename I2, typename O > void reissverschluss( I1 first1, I1 last1, I2 first2, I2 last2, O out ) { for( ; first1 != last1 || first2 != last2; ) { if( first1 != last1 ) *out++ = *first1++; if( first2 != last2 ) *out++ = *first2++; } } int main() { using namespace std; int fg[] = { 14, 31, 29, 18, 15, 19 }; int fk[] = { 3, 7, 10 }; reissverschluss( fg, fg + sizeof(fg)/sizeof(*fg), fk, fk + sizeof(fk)/sizeof(*fk), ostream_iterator< int >( cout << "Ausgabe ", " " ) ); cout << endl; return 0; }nicht viel anfangen kannst. Das mit den Arrays ist irgendwie umständlich. Ständig muss man sich um das Ende des Arrays kümmern.
Das Programm oben erzeugt
Ausgabe 14 3 31 7 29 10 18 15 19poste mal den Code, der fg und fk beschreibt. ... Ah - da ist er ja schon.
Gruß
Werner
-
ich muss doch abwechselnd ausgeben. zuerst habe ich mir überleft, dass ich das mit 2 for schleifen mache, aber es hat kein sinn
@werner: danke werner für dein Code, aber es ist für mich kompliziert. ich lerne schritt für schritt und schaue dass ich möglichst viele codes schreibe, damit ich im oktober auf der prüfung kein probleme habe
-
nata schrieb:
ich muss doch abwechselnd ausgeben. zuerst habe ich mir überleft, dass ich das mit 2 for schleifen mache, aber es hat kein sinn
eine schleife reicht. ich würde für die aufteilung der zahlen zwei zählvariable spendieren, damit das programm für die ausgabe weiß, wieviele zahlen jeweils in den arrays sind.
-
Wasn das für ´ne beknackte Aufgabe? Was passiert denn für die Eingaben
1 2 3 4 5 6 7 8 9 10und
x = 25?
Ansonsten kriegt man das Ganze relativ einfach mit
std::vector,std::partitionundstd::greaterhin. Einfach alle Werte in den Vektor einlesen,std::partitionmit dem Prädikatstd::greater<int>( x )aufrufen und die Werte ausgeben.
-
in klein und gross ist doch die größe der jeweiligen arrays gespeichert
meinst du dass ich so machen soll:
if(gross > klein){ //for schleife wo ich gross durchlaufe }else{ //for schlefe wo ich klein durchlaufe }in meinem fall weiß ich schon dass gross mehr ist habe so gemacht
for(int i = 0; i < gross; i++){ cout << fg[i] << " " << fk[i]; }aber ausgabe war 14 331 729 1018 3276715 494119 -844248416
-
DocShoe schrieb:
Wasn das für ´ne beknackte Aufgabe? Was passiert denn für die Eingaben
1 2 3 4 5 6 7 8 9 10und
x = 25?
Ansonsten kriegt man das Ganze relativ einfach mit
std::vector,std::partitionundstd::greaterhin. Einfach alle Werte in den Vektor einlesen,std::partitionmit dem Prädikatstd::greater<int>( x )aufrufen und die Werte ausgeben.dann passiert bei korrekter implemetierung das:
ausgabe:
Fg:
Fk: 1 2 3 4 5 6 7 8 9 10nata schrieb:
in klein und gross ist doch die größe der jeweiligen arrays gespeichert
okay, das ist gut. später kannst dann vektoren benutzen, dann kannst du die zählvariable sparen, also weglassen.

-
[quote="nata"]
meinst du dass ich so machen soll:if(gross > klein){ //for schleife wo ich gross durchlaufe }else{ //for schlefe wo ich klein durchlaufe }nein, eher so:
for (i=0; i<zahl_eingebe; i++)
{
if ( i<klein ) cout << fk[i] ....
if ( i<gross ) cout << fg[i] ....}
-
wahnsinn. es funktioniert, aber als ich den codeteil gelesen habe, habe nicht geglaubt dass es funktionieren konnte

aber als ich groß durchgelaufen bin und cout << fg[i] << " " << fk[i];
ausgegeben habe,warum war so komische ausgabe?danke nochmals
-
büddää, null problemooooo

-
nata schrieb:
aber als ich groß durchgelaufen bin und cout << fg[i] << " " << fk[i];
ausgegeben habe,warum war so komische ausgabe?weil du 2 zahlen mit einem leerzeichen dazwischen ausgegeben hast (-> "5 87") und im nächsten schleifen durchlauf das gleiche wieder gemacht hast ohne trennzeichen(-> "5 87" + "2 67" ==> "5 872 67")
-
nata schrieb:
aber als ich groß durchgelaufen bin und cout << fg[i] << " " << fk[i];
das funktioniert auch nur, wenn die Arrays gleich groß sind.
-
sind sie ja, aber sie sind nicht unbedingt komplett gefüllt mit richtigen daten, sprich ab einem gewissen index könnte schmuh rauskommen