Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wie kann ich abwechselnd zwei Felder ausgeben?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
18.11.2002, 14:46 Uhr
~karim
Gast


Hallo...

Ich bin blutige Anfängerin was das Programmieren angeht und bräuchte mal eure Hilfe.

Ich gebe ein Feld ein, nennen wir es F1 (ende mit 0). Danach gebe ich einen Wert ein, sagen wir der heisst y. Jetzt sollen alle Zahlen die größer als y sind in F2 gespeichert werden und die anderen in F3.
Danach sollen die Zahlen abwechselnd ausgegben werden...

Z.B: eingabe: 25 10 2 3 87 5
y= 4
dann soll es so ausgegeben werden:
25 2 10 3 87 5

Wie kann ich aber die beiden Felder abwechselnd ausgeben? Kann mir da jemand helfen?

Danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.11.2002, 15:32 Uhr
void*
Generic Pointer
(Operator)



C++:
#include <vector>
#include <iostream>

int main(void)
{
  unsigned i=1;
  std::vector<unsigned> f1;

  do
  {
    std::cin >> i;
    f1.push_back(i);
  } while(i);

  f1.pop_back();

  unsigned y;
  std::cin >> y;

  std::vector<unsigned>::size_type size=f1.size();
  std::vector<unsigned> f2, f3;

  for(std::vector<unsigned>::size_type j=0; j<size; ++j)
  {
    if(f1[j]>y)
      f2.push_back(f1[j]);
    else
      f3.push_back(f1[j]);
  }

  std::vector<unsigned>::const_iterator f2i=f2.begin(), f3i=f3.begin();
  unsigned output;
  do
  {
    output=2;
    if(f2.end() != f2i)
      std::cout << *f2i++ << " ";
    else
      --output;
    if(f3.end() != f3i)
      std::cout << *f3i++ << " ";
    else
      --output;
  } while(output);


  return(0);
}


--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.11.2002, 11:01 Uhr
~karim
Gast


hallo... ich konnte mit deinem programm nicht wirklich viel anfangen...

ich hab ne andere art zu programmieren gelernt bzw lerne gerade...

es wär echt super wenn du dir mal meinen source code anschauen könntest und mir sagst was bei mir falsch läuft bzw wie ich die ausgabe machen kann.. danke schon mal jetzt:


C++:
#include<iostream.h>
int main (){
int F[50];
int Fg[50], Fk[50];
int x;
int j = 0;
int k = 0;


cout << "\n Bitte geben Sie max. 50 Zahlen ein und beenden Sie Ihre Eingabe mit 0! \n";


while (F != 0){
cin >> F;
    if (F == 0){
     cout << "\n Bitte geben Sie eine Zahl ein! \n";
     cin >> x;

    }

}

for (int ii = 0; F[ii] != 0; ii++){
     if (F[ii] > x){
     Fg[j] = F[ii];
     j++;
     }
     else {
     Fk[k] = F[ii];
     k++;
     }
}

cout << //wie mach ich die ausgabe?//

} else

     cout << "\n Sie haben mehr als 50 Zahlen eingegeben! \n";

}



ich hoffe du kannst mir helfen... danke schon mal jetzt.

void*: Code-Tags eingefügt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.11.2002, 11:02 Uhr
void*
Generic Pointer
(Operator)



C++:
#include <iostream.h>

int main ()
{
  int F[50];
  int Fg[50], Fk[50];
  int x;
  int j = 0;
  int k = 0;

  cout << "\n Bitte geben Sie max. 50 Zahlen ein und beenden Sie Ihre Eingabe mit 0! \n";

  int l=0;
  do
  {
    if(l<50)
    {
      cout << "\n Bitte geben Sie eine Zahl ein! \n";
      cin >> F[l++];
    }
    else
    {
      cout << "\n Sie haben mehr als 50 Zahlen eingegeben! \n";
      return(1);
    }
  } while (F[l-1]);

  cout <<" Mit welcher Zahl vergleichen?\n";
  cin >> x;

  for (int ii = 0; F[ii] != 0; ii++)
  {
    if (F[ii] > x)
    {
      Fg[j] = F[ii];
      j++;
    }
    else
    {
      Fk[k] = F[ii];
      k++;
    }
  }


  Fg[j]=Fk[k]=0;

  int *fgp=Fg, *fkp=Fk;
  unsigned output;
  do
  {
    output=2;
    if(*fgp)
      cout << *fgp++ << " ";
    else
      --output;
    if(*fkp)
      cout << *fkp++ << " ";
    else
      --output;
  } while(output);
  cout << flush;


  return(0);
}


--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.11.2002, 11:06 Uhr
void*
Generic Pointer
(Operator)


Anmerkungen:

1. Die Verwendung von iostream.h (von allen Standard-Headern mit .h) ist veraltet. Dem aktuellen Standard entsprechend sind die ohne .h zu verwenden. Dann ist auch alles im namespace std gekapselt.

2. Wenn Du was noch nicht verstehst nachfragen (konkret, bitte):
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.11.2002, 13:32 Uhr
karim



hallo... ich hab da schon ein problem.

und zwar mit der ausgabe:

int *fgp=Fg, *fkp=Fk;
unsigned output;
do
{
output=2;
if(*fgp)
cout << *fgp++ << " ";
else
--output;
if(*fkp)
cout << *fkp++ << " ";
else
--output;
} while(output);
cout << flush;

ich kenn mich hier überhaupt nicht aus. ich habe noch nie mit output gearbeitet und was flush heisst weiss ich auch nicht. *fgp=Fg: ist das ein Zeiger? die kann ich auch noch nicht.

gibt es da vielleicht noch andere lösungsvorschläge?

danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.11.2002, 13:44 Uhr
void*
Generic Pointer
(Operator)


Hallo!

1. Ja, fgp und fkp sind Zeiger!
2. output ist nur eine Variable um zu prüfen, ob wenigstens aus einem Feld gelesen wurde.
Sonst wird die Ausgabe beendet.
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.11.2002, 13:52 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Ist es so recht:


C++:
bool Fgempty=false, Fkempty=false;
  for(int v=0; v<50; ++v)
  {
    if(!Fg[v])
      Fgempty=true;
    if(!Fk[v])
      Fkempty=true;
    if(!Fgempty)
      cout << Fg[v] << " ";
    if(!Fkempty)
      cout << Fk[v] << " ";
  }
  cout << flush;



Btw, flush zwingt den stream zur Ausgabe.
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.11.2002, 15:53 Uhr
karim



hallo.. ich bins die nervensäge...

warum gibt mir folgender code zur ausgabe... nur zwei zahlen aus und nicht alle ??? zb. eingabe: 10 20 30 40 50 0
eingabe x: 21
ausgabe: 30 20

hier der code (zur ausgabe):

int ii = 0;
do{
if (Fg[ii] !=0)
cout << Fg[ii];
if (Fk[ii] != 0)
cout << Fk[ii];
ii++;
}
while(Fg[ii] == 0 && Fk[ii] == 0);

warum macht das programm nicht das was ICH will ;-)
danke für die hilfe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.11.2002, 16:02 Uhr
void*
Generic Pointer
(Operator)


Wegen der Abbruch bedingung:
Die Schleife wird nur ein 2. mal durchlaufen, wenn Fg[ii] == 0 und Fk[ii] == 0. D.h. praktisch nier (nur wenn man sofort 0 eingibt).
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: