| Autor |
Nachricht |
nata
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.10.2010
Beiträge: 35
|
nata Mitglied
13:54:37 01.08.2012 Titel: |
Wie kann man 2 Array verschmelzen? |
Zitieren |
Hallo an Alle,
die aufgabe ist;
Eingabe: 3 14 31 7 29 10 18 15 19 0 x=10
Fg enhält dann 14 31 29 18 15 19 und Fk 3 7 10
Ausgabe: 14 3 31 7 29 10 18 15 19
f array habe ich schon in fg und fk reingeschrieben, aber wie ich nacheinander ausgebe komme ich nicht dazu. Ich bin im Moment beim Stof array , zeiger
danke euch nata |
|
|
|
 |
daddy_felix
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.01.2012
Beiträge: 604
|
daddy_felix Mitglied
14:05:08 01.08.2012 Titel: |
|
Zitieren |
schreib mal ein bisschen mehr... ich habe zwar so eine Ahnung, wie die Aufgabe sein soll, aber irgendwie wäre mehr Text wirklich hilfreich |
|
|
|
 |
nata
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.10.2010
Beiträge: 35
|
nata Mitglied
14:07:45 01.08.2012 Titel: |
|
Zitieren |
oooo danke
Lesen Sie maximal 50 Zahlen (Abschluß mit 0) in ein Feld F ein, sowie einen Wert x. Teilen Sie den Inhalt des Feldes F so auf zwei weitere Felder Fg und Fk auf, dass alle Werte, die größer als x sind, in Fg liegen und alle anderen in Fk.
Geben Sie dann abwechselnd je eine Zahl aus Fg und eine aus Fk aus, solange bis alle Zahlen ausgegeben sind.
mein code
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include<iostream>
using namespace std;
int main(){
const int max = 50;
int fg[max];
int fk[max];
int f[max];
int zahl_eingeben = 0;
int x;
int neu = 1;
int klein = 0;
int gross = 0;
while(neu != 0){
cin >> neu;
if(zahl_eingeben < max && neu !=0){
f[zahl_eingeben] = neu;
zahl_eingeben +=1;
}
}
cin >> x;
for(int i = 0; i < zahl_eingeben; i++){
if(f[i] > x){
fg[gross] = f[i];
gross +=1;
}else{
fk[klein] = f[i];
klein += 1;
}
}
cout << "Array mit kleine Zahle ist :\n";
for(int i = 0; i < klein; i++){
cout << fk[i] << " " ;
}
cout << endl;
cout << "Array mit große Zahle ist :\n";
for(int i = 0; i < gross; i++){
cout << fg[i] << " " ;
}
cout << endl;
return 0;
} | |
lg nata |
|
|
|
 |
schmelz0r
Unregistrierter
|
schmelz0r Unregistrierter
14:16:27 01.08.2012 Titel: |
|
Zitieren |
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. |
|
|
|
 |
Werner Salomon
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.07.2005
Beiträge: 2160
|
Werner Salomon Mitglied
14:17:12 01.08.2012 Titel: |
|
Zitieren |
Hallo nata,
ich nehme an, dass Du damit| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #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| Code: | | Ausgabe 14 3 31 7 29 10 18 15 19 | |
poste mal den Code, der fg und fk beschreibt. ... Ah - da ist er ja schon.
Gruß
Werner |
|
|
|
 |
nata
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.10.2010
Beiträge: 35
|
nata Mitglied
14:19:05 01.08.2012 Titel: |
|
Zitieren |
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 |
Zuletzt bearbeitet von nata am 14:21:59 01.08.2012, insgesamt 1-mal bearbeitet |
|
 |
schmelz0r
Unregistrierter
|
schmelz0r Unregistrierter
14:21:52 01.08.2012 Titel: |
|
Zitieren |
| 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. |
|
|
|
 |
DocShoe
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.04.2008
Beiträge: 1817
|
DocShoe Mitglied
14:33:22 01.08.2012 Titel: |
|
Zitieren |
Wasn das für ´ne beknackte Aufgabe? Was passiert denn für die Eingaben
| Code: | | 1 2 3 4 5 6 7 8 9 10 | |
und
?
Ansonsten kriegt man das Ganze relativ einfach mit std::vector,std::partition und std::greater hin. Einfach alle Werte in den Vektor einlesen, std::partition mit dem Prädikat std::greater<int>( x ) aufrufen und die Werte ausgeben. |
_________________ Die fünf häufigsten Anzeichen für Faulheit:
1.
|
|
 |
nata
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.10.2010
Beiträge: 35
|
nata Mitglied
14:36:58 01.08.2012 Titel: |
|
Zitieren |
in klein und gross ist doch die größe der jeweiligen arrays gespeichert
meinst du dass ich so machen soll:
| C++: | 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
| C++: | for(int i = 0; i < gross; i++){
cout << fg[i] << " " << fk[i];
} | |
aber ausgabe war 14 331 729 1018 3276715 494119 -844248416 |
|
|
|
 |
schmelz0r
Unregistrierter
|
schmelz0r Unregistrierter
14:39:35 01.08.2012 Titel: |
|
Zitieren |
| DocShoe schrieb: | Wasn das für ´ne beknackte Aufgabe? Was passiert denn für die Eingaben
| Code: | | 1 2 3 4 5 6 7 8 9 10 | |
und
?
Ansonsten kriegt man das Ganze relativ einfach mit std::vector,std::partition und std::greater hin. Einfach alle Werte in den Vektor einlesen, std::partition mit dem Prädikat std::greater<int>( x ) aufrufen und die Werte ausgeben. |
dann passiert bei korrekter implemetierung das:
| Zitat: |
ausgabe:
Fg:
Fk: 1 2 3 4 5 6 7 8 9 10 |
| nata 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.
|
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|