www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de