Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » struct

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 <
010
21.10.2008, 16:40 Uhr
0xdeadbeef
Gott
(Operator)


Das wird im Zweifel eher an Integerdivision liegen. Wenn du zwei Integer durcheinander dividierst, erhältst du wieder einen Integer, eventuelle Nachkommastellen gehen dabei verloren - das heißt zum Beispiel, dass 3/2 == 1.

Wenn, wie dein Codebeispiel andeutet, Noten auch Nachkommastellen haben können sollen, schreib

C++:
struct t_verw {
  string name;
  double anote[4];
};


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
21.10.2008, 16:49 Uhr
programmnoob



hmm...

habe float typen verwendet und habe deinen vorschlag im code geändert.
aber er zeigt ein falsches ergebnis.

hier mal der ganze code.


C++:
#include<iostream>

using namespace std;

int main ()
{

//--------------------------------------------------------

struct t_verw {string name;
               double anote[5]; // vier noten [0] für rechnung verwenden
              };

t_verw a[2];
string suche;
int noteneingabe;

//-------------------------------------------------------
//-------------------------------------------------------


for (int i=0; i<2; i++)                         //man gibt einen namen ein und
{
   cout<<"name eingeben"<<endl;                  //dannach gibt man 4 noten ein
   cin>>a[i].name;

      for (int note=1; note<5; note++)           //dannach kommt wieder ein name
      {
      cout<<"note eingeben"<<endl;
      cin>>a[i].anote[note];
      }
}

                                                 /*eingabe suche soll vergleichen mit a[i].namen*/
      
                                                
//---------------------------------------------------------------------------

system("cls");
cout<<" gebe namen ein der gesucht wird";
cin>>suche;



for (int i=0; i<2; i++)
{

   if (suche == a[i].name)
   {
   cout<<" eintrag gefunden "<<endl<<endl;
   cout<<a[i].name;
   cout<<endl<<" wollen sie die alle noten wissen oder nur eine einzelne oder rechnen";
   cout<<endl<<" geben sie ein ob 1)gesamt 2)einzeln 3)durchschn.";
   cout<<endl;
   cin>>noteneingabe;
   }

       switch (noteneingabe)
       {
          case 1:
          cout<<a[i].name<<endl;
          cout<<" hat note "<<a[i].anote[1]<<" "<<a[i].anote[2]<<" "<<a[i].anote[3]<<" "<<a[i].anote[4];
          cout<<endl;
          cout<<"0-9 eingeben und enter für jeweils anderen schüler";
          int stopp;
          cin>>stopp;
          break;

          case 2:
          int x;
          cout<<"welche note bei der eingabe";
          cin>>x;
          cout<<a[i].name<<std::endl;
          cout<<" hat note "<<a[i].anote[x];
          int stoppen;
          cin>>stoppen;
          break;

          case 3:
          cout<<"noten gesamt"<<endl;
          a[i].anote[0]=(((a[i].anote[1]+a[i].anote[2])/2) + (((a[i].anote[3]*2)+(a[i].anote[4]*2))/4)   /2);
          cout<<a[i].anote[0];
          int stop;
          cin>>stop;
          break;


       }
   }

}




Dieser Post wurde am 21.10.2008 um 16:52 Uhr von programmnoob editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
28.10.2008, 16:54 Uhr
~programmnoob
Gast


wollte mal fragen ob ihr ein paar tipps geben könnt was ich verbessern kann
oder im programm ändern sollte.
oder sogar noch dazuschreiben.


C++:
#include<iostream>

using namespace std;

int main ()
{

//--------------------------------------------------------

struct t_verw {string name;
               double anote[5]; // vier noten aber [0]bleibt leer
              };

t_verw a[2];
string suche;
int noteneingabe;

//-------------------------------------------------------
//-------------------------------------------------------


for (int i=0; i<2; i++)                         //man gibt einen namen ein und
{
   cout<<"name eingeben"<<endl;                  //dannach gibt man 4 noten ein
   cin>>a[i].name;

      for (int note=1; note<5; note++)           //dannach kommt wieder ein name
      {
      cout<<"note eingeben"<<endl;
      cin>>a[i].anote[note];
      system("cls");
      }
}

                                                 /*eingabe suche soll vergleichen mit a[i].namen
                                                 schleife soll i++  falls suche=a[i].name
                                                 soll noten gezeigt werden.
                                                 */

//---------------------------------------------------------------------------

system("cls");
cout<<" gebe namen ein der gesucht werden"<<endl;
cout<<"-----------------------------------"<<endl<<endl;
cout<<"der gesuchte name ist  ";
cin>>suche;



for (int i=0; i<2; i++)
{

   if (suche == a[i].name)
   {
   cout<<endl<<"eintrag gefunden"<<endl<<"------------------"<<endl;
   cout<<endl<<endl<<" wollen sie alle noten wissen oder nur eine einzelne";
   cout<<endl<<" geben sie ein ob 1)gesamt 2)einzeln 3)durchschn.";
   cout<<endl<<endl;
   cin>>noteneingabe;
   }

       switch (noteneingabe)
       {
          case 1:
          cout<<endl<<endl<<"--------------------------"<<endl;
          cout<<a[i].name<<endl<<endl;
          cout<<"--------------------------"<<endl;
          cout<<" hat note "<<a[i].anote[1]<<" "<<a[i].anote[2]<<" "<<a[i].anote[3]<<" "<<a[i].anote[4];
          cout<<endl;
          system("pause");
          break;

          case 2:
          int x;
          cout<<"welche note ";
          cin>>x;
          cout<<a[i].name<<endl<<endl;
          cout<<"die "<<x<<". note von "<<a[i].name << " ist eine "<<a[i].anote[x];
          system("pause");
          break;

          case 3:
          cout<<"noten gesamt"<<endl;
          a[i].anote[0]=(((a[i].anote[1]+a[i].anote[2])/2) + (((a[i].anote[3]*2)+(a[i].anote[4]*2))/4)   /2);
          cout<<a[i].anote[0];
          system("pause");
          break;


       }
   }

}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
28.10.2008, 20:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
for (int note=1; note<5; note++)           //dannach kommt wieder ein name
      {
      cout<<"note eingeben"<<endl;
      cin>>a[i].anote[note];
      system("cls");
      }



falsch, note 0 wird nie eingelesen, das muss "note=0" heißen, was wohl deine rechenfehler ergibt

dann das system("cls") ist grausam, nimm aus der WinAPI-faq das "clrscr - the microsoft way" (der titel stimmt etz net, aber was mit clrscr wars jedenfalls)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
29.10.2008, 09:35 Uhr
programmnoob



note 0 soll eigentlich nicht belegt werden zumindest nicht gleich
das feld anote[0] ist das gesamtergebnis der noten [1][2][3][4]

oder verstehe ich da etz was falsch?
zumindest ist das die idee dahinter

aber thx für die schnelle antwort.

wenn ihr noch was wisst wie man das programm verbessern kann sagt es
 
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: