matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++undeclard identifier "cin"
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Informatik • Physik • Technik • Biologie • Chemie
Forum "C/C++" - undeclard identifier "cin"
undeclard identifier "cin" < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

undeclard identifier "cin": Frage
Status: (Frage) beantwortet Status 
Datum: 21:00 Mi 25.05.2005
Autor: Maria84

Hallo Leute,

ich muß (als Computerversagerin) ein paar einfache c-Programme als Hausaufgabe schreiben. Dazu habe ich mir den freien lcc-compiler von Jacob Navia heruntergeladen, der auch vom Lehrstuhl empfohlen wird.
Leider scheiterte ich schon am einfachsten Programm, weil beim compilieren angezeigt wurde, daß "cin" undeklariert wäre. Ich habe daraufhin das einfachste c-Programm abgetippt, was ich finden konnte (aus dem Vorlesungsskript), um zu testen, woran es liegt, und es kommt fast dieselbe Fehlermeldung:

#include<iostream.h>

main()

{ int a,b,c;

     cout<<"Geben Sie drei zahlen [mm] ein!\n; [/mm]
     cin>>a>>b>>c;
     cout<<"Das Minimum ist "
                  <<((a<b)?((a<c)?a:c):((b<c)?b:c));

}



Das Problem ist, daß er beim compilieren, abgesehen davon, daß er einen return-Wert vermisst (was aber nicht das Problem sein soll)
wegen "cin" als undeclared rummeckert, ebenso in der cin-Zeile, daß das statement keinen effect hat. In Folge davon natürlich possible usage of a,b,c ,cin before definition.
Genau denselben Quark zeigt er bei anderen Programmen.
Kann mir das jemand erklären?


Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.






        
Bezug
undeclard identifier "cin": using namespace
Status: (Antwort) fertig Status 
Datum: 21:36 Do 09.03.2006
Autor: Andi1984

Hi Maria,

ich denke es geht deswegen nicht, weil du keine namespaces eingebunden hast.

Füge mal folgende Zeile vor dem main-Teil ein:

using namespace std;

D.h. man benutzt nun die Standard-Namensumgebung. Wenn du dein Programm so lassen willst musst du

anstatt cout und cin

std::cout und std::cin benutzen, damit der Compiler weiß, was er benutzen soll.

Probier das mal aus.

MfG Andi

Bezug
        
Bezug
undeclard identifier "cin": Antwort
Status: (Antwort) fertig Status 
Datum: 21:59 Mi 25.05.2005
Autor: Karl_Pech

Hallo Maria,


>  Leider scheiterte ich schon am einfachsten Programm, weil beim compilieren angezeigt wurde, daß "cin" undeklariert wäre.


Das hört sich nach einer falschen "#include"-Präprozessor-Direktive an.


> Ich habe daraufhin das einfachste c-Programm
> abgetippt, was ich finden konnte (aus dem
> Vorlesungsskript), um zu testen, woran es liegt, und es
> kommt fast dieselbe Fehlermeldung:
>  
>
1: #include <iostream.h>
2: >  
3: > main()
4: >  
5: > { int a,b,c;
6: >  
7: > cout<<"Geben Sie drei zahlen ein!\n;
8: >       cin>>a>>b>>c;
9: >       cout<<"Das Minimum ist "
10: >                    <<((a<b)?((a<c)?a:c):((b<c)?b:c));
11: >  
12: > }


>  
>
>
> Das Problem ist, daß er beim compilieren, abgesehen davon,
> daß er einen return-Wert vermisst (was aber nicht das
> Problem sein soll)
>  wegen "cin" als undeclared rummeckert, ebenso in der
> cin-Zeile, daß das statement keinen effect hat. In Folge
> davon natürlich possible usage of a,b,c ,cin before
> definition.
>  Genau denselben Quark zeigt er bei anderen Programmen.


Bei mir wurde dein Quelltext kompiliert (ich habe jetzt als Rückgabewert 'void' eingefügt, und scheinbar fehlten da noch schließende Anführungsstriche beim Text zum ersten 'cout'.):


1: #include <iostream.h>
2:
3: void/**/ main()
4:   
5:  { int a,b,c;
6:   
7:  cout<<"Geben Sie drei zahlen ein!\n"/**/;
8:        cin>>a>>b>>c;
9:        cout<<"Das Minimum ist "
10:                     <<((a<b)?((a<c)?a:c):((b<c)?b:c));
11:   
12:  }


Die entsprechenden Stellen sind mit leeren Kommentaren versehen. Es kann also nur an dieser '#include'-Anweisung liegen. Möglicherweise kann der Präprozessor deines Compilers nichts mit den spitzen Klammern ('<', '>') dieser Anweisung anfangen, weil irgendwelche Quellpfade für den Compiler (noch) nicht gesetzt wurden. Die spitzen Klammern sind nämlich ein Befehl an den Präprozessor den Standardpfaden folgend nach dem entsprechenden Quelltext (hier für cin und cout) zu suchen. Wenn die Pfade nicht richtig gesetzt wurden, kann er keinen entsprechenden Quelltext finden.

Versuche deshalb dein Programm syntaktisch so korrekt und konservativ wie möglich zu formulieren. Z.B. mögen manche alten C-Compiler keine Variablendefinitionen mit gleichzeitiger Zuweisung:


1: int k = 3; /*Fehler, obwohl syntaktisch korrekt!*/
2:
3: int k;
4: k =3; /*Ok!*/


Nebenbei bemerkt: Wie hast Du deine Quelldatei benannt? test.c oder test.cpp oder test.cc? Es wird dich vielleicht überraschen, aber manche Compiler erkennen allein an der Dateiendung der Quelltext-Datei die Programmiersprache, die dort benutzt wurde. Wenn Du also Sprachelemente aus C++ benutzt, aber als Dateiendung '.c' gesetzt hast, könnte der Compiler Dich "mißverstehen". :-)



Viele Grüße
Karl



Bezug
                
Bezug
undeclard identifier "cin": Idee
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:21 Do 26.05.2005
Autor: Maria84

Hallo Karl,

vielen lieben Dank für Deine Antwort (ich habe das Programm übrigens als
*.c gespeichert), aber ich glaube, das problem lag ganz woanders.

Wenn ich in das Installationsverzeichnis des Entwicklungstools gehe, und dort die iostream.h-Textdatei öffne, erklärt der "Macher", das iostream nur für cout definiert sei, weil er für cin noch keine Zeit hatte.
Und solche Programme werden offiziel vom Lehrstuhl empfohlen.

Ich Danke Dir jedenfalls für Deine Mühe, ebenso allen anderen, die sich das durchgelesen haben.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]