Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  Wie kann man 2 Array verschmelzen?  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
nata
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.10.2010
Beiträge: 35
Beitrag 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
Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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
Code:
x = 25

?

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
Beitrag 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




Beitrag 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
Code:
x = 25

?

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.
:)
c++.de :: C++ (auch C++0x und C++11) ::  Wie kann man 2 Array verschmelzen?  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




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.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.