kan ikke lige få simpel kode til at virke

Tags:    c++ php

Jeg er ret ny til C++, og kan ikke få dette til at virke..
hvad er gelt?
----------------------------------
#include <iostream.h>
char setitem;
char ifound;
void main(void)
{
cout << "Enter the The set name or a part of it" << endl;
while(ifound = "error"){
cin >> setitem;
}
cout << "Item found!" << endl;
}
-----------------------------------



10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Melder den fejl ved compilering eller hvorfor virker den ikke?

Jeg tror umiddelbart, at det er denne linie, der ikke er korrekt:
while(ifound = "error"){

Den sætter værdien af ifound lig med error, og så længe den kan det kører den derud af...

Lav den i stedet således:
while(ifound == "error"){

Altså med 2 = (lighedstegn), da den så tjekker, om den er lig med i stedet for at tilskrive den en værdi...

mikl-dk | ICQ: 159096501 | MSN: mikl@mikl.dk



For det første er der ikke noget der heder <iostream.h>. Du skal bruge <iostream>. Som det allerede er blevet nævnt skal du bruge en strengtype, som f.eks. std::string, i stedet for char:
#include <iostream>
#include <string>
using namespace std;
void main(void)
{
string setitem;
string ifound;
cout << "Enter the The set name or a part of it" << endl;
while(ifound == "error")
{
cin >> setitem;
}
cout << "Item found!" << endl;
}

Bemærk at programmet ikke giver meget mening da du aldrig kommer ind i lykken fordi ifound er forskellig fra "error" fra starten.




Hej
Programmere du i dos programmering eller i Windows ?
Nå men det ændre ikke så meget i svare på dit sp.

Giver lige et par små hintes :

I C / C++ bruges "=" til at sætte en variabel ligmed noget. f.eks.
int i = 4; // i får værdien 4 tildelt

Hvorimod "==" bruges til at tjekke om en variabel er ligmed noget f.eks
if(i==4)
cout<<"i er 4";
else
cout<<"i er IKKE 4";

Ok næste lille ting i C / C++. Her anvendes forskellige grund typer og nogle af disse er :
Tal typer
- int
- long
- float
- char
- double

Tegn typer
- char

Læg mærke til at char både kan anvendes som et tegn og som et tal. I C / C++ skrives signed eller unsigned for an en variabel for at markere om den kan indeholde negative tal og positive tal eller kun positive tal. Men menner default er signed hvis der ikke står noget. f.eks.

char chr; // Kan indeholde fra -128 til 127 (8 bit)
unsigned char char1 // kan indeholde fra 0 til 255 (8 bit)

Da et tegn fylder 8 bit som er en byte, bliver man nødtil at lave et array hvis man skal gennem flere tegn. f.eks.

char chr[25]; // Hvilket kan indeholde 24 tegn
// chr[0] : plads 1 og chr[23] sidste tegn. chr[24]='\\0'; (hvilket er et slut tegn)

Altå kort sagt oprettes der et array af tegn hvis der skal gennems flere tegn i en variabel. Hvis du arbejder i MFC kan du bruges en CString, istedet. Dettte er blot en klasse der er oprettet, som søger for at oprette char array under overfalden. (sagt lidt popet)

Som der var en der skrev kan du anvende en dynamiske char variabel, hvilket i grunden blot er en char pointer. En poniter er en pegepen. Altså noget der kan pege på en adresse. f.eks.

char *pChr;
pChr = new char[20]; // Opretter 19 pladser pga. slut tegn....
// pChr kan anvendes som et almindeligt array f.eks.
pChr[0]='A'; // pChar indeholder nu et a på plads 0
pChr[1]='\\0'; // Tekst slut tegn. "Smart hvis man bruger cout"
// En anden måde at skrive det samme på
pChr[0]=65; // pChr[0] indeholder nu 65 som svare til et "A". Derfor to måder at skrive
// det samme på

if(pChr[0]==65)
;// Gør noget
if(pChr[0]=='A')
;//

Når man bruger dynamiske variabler SKAL man altid huske at slette dem igen (disse oprettes når programmet køre). Dette gøres med kommandoen delete. f.eks.

delete []pChr; (Sletter alle de pladser der er oprettet)

// Dette giver en fejl hvis der ikke er oprette nogle pladser...

En lille komentar til #include<file.h>

I C / C++ hedder syntax en som du skrev #include <iostream.h> og ikke #include <iostream> (selv om det sikkert virker i nogle kompilere)

Hvis den file du includer ikke er en del af C/C++ så hedder det #include "filenavn.h". blot for en odens skyld.

Den store forskel mellem C og C++ er at i C++ kan man anvende klasser og objekt onteret programmering, så det er nok det du skriver kode i. (Ja der er også andre fordele i C++ i forhold til C, men det er den korte version)

Fik lige lyst til at give et par hints omkring funktions kald i C++

f.eks.
void test(const char *t,int x=2, int z=9)
{ // Funktion start
for(int i=0;i<x;i++) // x er antal gange teksten bliver udskrevet
cout<<t; // Udskriver teksten i t

cout<<"\\n < = "<<z<<"\\n";
} // Funktion slut. const char * t kan indeholde lige så mange tegn man ønsker

Denne funktion kan kaldes på følgende måder :
test("Hej med dig"); // Her bliver x= 2 og z = 9
test("Hej med dig",1); // Her bliver x=1 og z= 9
test("Hej med dig",1,2); // Her bliver x=1 og z = 2

Nå men vil slutte, håber ikke jeg fik slået dig helt ud, ville blot lige give dig et par hint med på vejen.

Best Regaard
Janus S. Andersen

*** Livet er smukt ***



Du bruger char som type.
Char kan kun indeholde et enkelt tegn.
Du skal bruge en char pointer (char *), samt allocare plads til
at have tegn i .. eller bruge en String type.

Det er 100 år siden jeg lavede c/c++ sidst, men jeg er sikker nok på char.
Der må være en String defineret et sted.

Bortset fra det, så er det bare som Php, = assigner og == laver logisk test.




I C / C++ hedder syntax en som du skrev #include <iostream.h> og ikke #include <iostream> (selv om det sikkert virker i nogle kompilere)


Er det ikke forskellen mellem at bruge STL eller ej, eller har jeg bare misforstået det. For i Bjarne Stroustrups bog om C++ kan man sagtens lave: #include<iostream>.....Han har sikkert også bare misforstået det......

(¯`·._.·[Brian Hvarregaard]·._.·´¯)



Hay Brian Hvarregaard !!!

Sorry, tror ikke Bjarne Stroustrup har misforstået noget. Har selv læst flere af hans bøger, og det kan godt være han skriver at man kan undlade at skrive .h, men råder dig til at bruge dot h. Det virker. Det andet virker sikkert også hvis han skriver det.... (Han er trods alt en Guro indefor området)

Men har aldrig fået fejl i C/C++ ved at skrive #include<iostream.h>.... Eller andre include filer...
Har programmeret mest mic og Windows programmering. Måske har du ret i at det har noget at gøre med STL, men kender ikke lige til det. (Desværre)

Best Regaard
Janus S. Andersen

P.s Skriv gerne navnet på bogen, så vil jeg da lige læse om det. Skriv evt også side nr. (Gerne ISBN nummer står nok på side 2)


*** Livet er smukt ***



Hay Brian Hvarregaard !!!

Sorry, tror ikke Bjarne Stroustrup har misforstået noget. Har selv læst flere af hans bøger, og det kan godt være han skriver at man kan undlade at skrive .h, men råder dig til at bruge dot h. Det virker. Det andet virker sikkert også hvis han skriver det.... (Han er trods alt en Guro indefor området)

Men har aldrig fået fejl i C/C++ ved at skrive #include<iostream.h>.... Eller andre include filer...
Har programmeret mest mic og Windows programmering. Måske har du ret i at det har noget at gøre med STL, men kender ikke lige til det. (Desværre)

Best Regaard
Janus S. Andersen

P.s Skriv gerne navnet på bogen, så vil jeg da lige læse om det. Skriv evt også side nr. (Gerne ISBN nummer står nok på side 2)


*** Livet er smukt ***


Lad mig citere ISO C++ standarden:

"These are deprecated features, where deprecated is defined as:
Normative for the current edition of the Standard, but not guaranteed to
be part of the Standard in future revisions."

Det vil sige, at disse headere er tilgaengelige idag, men du kan ikke vaere sikker paa at de ogsaa fungerer imorgen, naar eller hvis standarden bliver revideret. Dermed anbefales det, at man altid, hvis man vel og maerke skriver et nyt C++ program, at inkludere C++ headere og ikke C headere i sit program. Opdaterer eller udvider man gammel kode, er det bedste bare foelge samme praksis som i resten af koden. Header-problemer skal man ikke undervurdere - det kan tage lang tid at loese ..

"[depr.c.headers] D.5 Standard C library headers
For compatibility with the Standard C library, the C + + Standard
library provides the 18 C headers, as shown in Table 101:

Table 101—C Headers
<assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h>
<ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h>
<errno.h> <locale.h> <stdarg.h> <string.h>
<float.h> <math.h> <stddef.h> <time.h>"

At inkludere "iostream" er ikke det samme som at inkludere "iostream.h". Det er to forskellige filer, hvilket du ogsaa kan forvisse dig om ved at kigge i foelgende path "%PROGRAM_FILES%\\Microsoft Visual Studio\\VC98\\Include" ...

PS. Der er ikke noget ISBN nummer paa side 2 i Stroustrups bog. Kun et citat fra Karen Blixens "Syv fantastiske fortællinger"...


[Redigeret d. 17/06-03 19:17:38 af Mads]



Ok... Det kan godt være jeg tager fejl. Og deved vil jeg da også give mig. Men sjovt nok du du taler om Bjarne Stroustrup´s bog har min ISBN : 0-201-53992-6....

Men tak for hintet...... Og ok jeg tror på dig. Gider ikke en gang slå det op.

Hay Brian Hvarregaard !!!

Sorry, tror ikke Bjarne Stroustrup har misforstået noget. Har selv læst flere af hans bøger, og det kan godt være han skriver at man kan undlade at skrive .h, men råder dig til at bruge dot h. Det virker. Det andet virker sikkert også hvis han skriver det.... (Han er trods alt en Guro indefor området)

Men har aldrig fået fejl i C/C++ ved at skrive #include<iostream.h>.... Eller andre include filer...
Har programmeret mest mic og Windows programmering. Måske har du ret i at det har noget at gøre med STL, men kender ikke lige til det. (Desværre)

Best Regaard
Janus S. Andersen

P.s Skriv gerne navnet på bogen, så vil jeg da lige læse om det. Skriv evt også side nr. (Gerne ISBN nummer står nok på side 2)


*** Livet er smukt ***

Lad mig citere ISO C++ standarden:

"These are deprecated features, where deprecated is defined as:
Normative for the current edition of the Standard, but not guaranteed to
be part of the Standard in future revisions."

Det vil sige, at disse headere er tilgaengelige idag, men du kan ikke vaere sikker paa at de ogsaa fungerer imorgen, naar eller hvis standarden bliver revideret. Dermed anbefales det, at man altid, hvis man vel og maerke skriver et nyt C++ program, at inkludere C++ headere og ikke C headere i sit program. Opdaterer eller udvider man gammel kode, er det bedste bare foelge samme praksis som i resten af koden. Header-problemer skal man ikke undervurdere - det kan tage lang tid at loese ..

"[depr.c.headers] D.5 Standard C library headers
For compatibility with the Standard C library, the C + + Standard
library provides the 18 C headers, as shown in Table 101:

Table 101—C Headers
<assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h>
<ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h>
<errno.h> <locale.h> <stdarg.h> <string.h>
<float.h> <math.h> <stddef.h> <time.h>"

At inkludere "iostream" er ikke det samme som at inkludere "iostream.h". Det er to forskellige filer, hvilket du ogsaa kan forvisse dig om ved at kigge i foelgende path "%PROGRAM_FILES%\\Microsoft Visual Studio\\VC98\\Include" ...

PS. Der er ikke noget ISBN nummer paa side 2 i Stroustrups bog. Kun et citat fra Karen Blixens "Syv fantastiske fortællinger"...


[Redigeret d. 17/06-03 19:17:38 af Mads]

*** Livet er smukt ***



Ok... Det kan godt være jeg tager fejl. Og deved vil jeg da også give mig. Men sjovt nok du du taler om Bjarne Stroustrup´s bog har min ISBN : 0-201-53992-6....


tjo jeg tror nu nærmere det var et hint om, at du ikke behøver fortælle folk hvor du kan finde et isbn nummer. Men jeg kan jo tage fejl.

Jo jo .. Det er sket før ..




Ok



t