[ diwljina @ 13.06.2011. 01:39 ] @
Spremam maturski iz programiranja i nasao sam neku knjigu c++ za pocetnike.Prepisao zadatak kako tamo pise i 9 gresaka :@
Slab sam sa c++ tacnije sa programiranjem .Pa bih vas zamolio da mi pomognete
Code:

#include<cstdlib>
#include<iostream>
#include<string>
using namespace std;
int main()
{
string odgovor;
odgovor.reserve(256);
cout<<"Unesite vase ime."<<endl;
cin>>odgovor;
cout<<endl;
cout<<odgovor<<",dobar dan!"<<endl;
cout<<endl;
system("PAUSE");
return 0;
}


ili ovaj ...

Code:

#include<cstdlib>
#include<iostream>
#include<string>
using namespace std;
int main()
{
char niz[255];
string tekst;
tekst.reserve(256);
int x;
int p;
do
{
cout<<“Unesite vase ime.“<<endl;
cout<<endl;
cin>>niz;
x=0;
p=1;
while(niz[x]!=’\0’)
{
if(isdigit(niz[x]))
{
p=0;
}
x=x+1;
}
}
while(p==0);
cout<<endl;
tekst=niz;
cout<<“Ime“<<tekst<<“sadrzi“<<tekst.size()<<“slova.“<<endl;
cout<<endl;
system(“PAUSE“);
return 0;
}

Znaci ako umesto slova ukucam brojeve on ce me opet opomenuti sve dok ne stavim slova, kad stavim ime onda mi kaze kolko to ime ima karaktera.Posto sam nov na ovom forumu pa se plasim da ce mi mozda tema biti obrisana, zamolio bih moderatora ako ce da je obrise nek je obrise al plz nek mi se javi na mail il na pm oko pomoci posto mi je vazno. Hvala unapred

[Ovu poruku je menjao X Files dana 13.06.2011. u 05:47 GMT+1]
[ X Files @ 13.06.2011. 04:51 ] @
Kod stavljaj u CODE tagove, zbog citljivosti, a ne bi bilo lose i da kod bude nazubljen, kao sto vidjas i u knjigama.

Prvi primer se prevodi bez gresaka u Code::Blocks okruzenju.

U drugom primeru stavi normalne (engleske) dvostuke i jednostruke navodinke, i sve ce biti u redu.
[ diwljina @ 13.06.2011. 10:58 ] @
Nista ne kontam :S da li mozes Vladimire ovde ili preko maila da mi pomognes posto pm ne mogu da ti saljem jer nisam ovde duze od 7 dana
[ X Files @ 13.06.2011. 11:43 ] @
Ne mogu preko maila, jer bi mi trebala dva-tri volonterska zivota da svima izadjem u susret.

Nista, kopiraj ovaj moj kod umesto tvog i probaj da kompajliras (nazubio sam ga, tek da vidis sta to znaci, bez ulaska u diskusiju o kvalitetu koda, stilu i sl.):
Code:

#include<cstdlib>
#include<iostream>
#include<string>
using namespace std;
int main()
{
    char niz[255];
    string tekst;
    tekst.reserve(256);
    int x;
    int p;
    do
    {
        cout<<"Unesite vase ime."<<endl;
        cout<<endl;
        cin>>niz;
        x=0;
        p=1;
        while(niz[x]!='\0')
        {
            if(isdigit(niz[x]))
            {
                p=0;
            }
            x=x+1;
        }
    }
    while(p==0);
    cout<<endl;
    tekst=niz;
    cout<<"Ime"<<tekst<<"sadrzi"<<tekst.size()<<"slova."<<endl;
    cout<<endl;
    system("PAUSE");
    return 0;
}


Samo sam umesto tvojih navodnika (“) stavio engleske ("). Ovo važi i za jednostruke.
[ diwljina @ 13.06.2011. 11:57 ] @
Compiling NONAME00.CPP:
Error NONAME00.CPP 1: Unable to open include file 'CSTDLIB'
Error NONAME00.CPP 4: Declaration syntax error
Error NONAME00.CPP 8: Undefined symbol 'string' in function main()
Error NONAME00.CPP 8: Statement missing ; in function main()
Error NONAME00.CPP 9: Undefined symbol 'tekst' in function main()
Error NONAME00.CPP 14: Undefined symbol 'cout' in function main()
Error NONAME00.CPP 14: Undefined symbol 'endl' in function main()
Error NONAME00.CPP 16: Undefined symbol 'cin' in function main()
Error NONAME00.CPP 21: Call to undefined function 'isdigit' in function main()
Error NONAME00.CPP 33: Call to undefined function 'system' in function main()

evo gle sad ovo :S
[ Mihajlo Cvetanović @ 13.06.2011. 12:13 ] @
Koji kompajler koristiš? Nije valjda dev-c++?
[ diwljina @ 13.06.2011. 12:23 ] @
:S pa u tom smo radili u skoli i u njemu trebam da spremim maturski
[ Mihajlo Cvetanović @ 13.06.2011. 12:52 ] @
Poruči nastavniku da "stručnjaci sa EliteSecurity foruma" kažu da Dev-C++ više ne treba da se koristi jer je beznadežno zastareo. U to može i sam da se uveri kad pogleda datum poslednje verzije. Heder cstdio je deo standarda, ali dev-c++ ga ne podržava... jer je star. Get the point? Umesto Dev-C++ tu je Code::Blocks kao duhovni naslednik.

Kao workaround zameni cstdio sa stdio.h, pa javi šta se dešava.
[ diwljina @ 13.06.2011. 13:30 ] @
1. slika je sa #include<cstdlib.h>

http://www.balkan-ekspress.com/upload/files/904142229.bmp

2. je bez #include<cstdlib.h>

http://www.balkan-ekspress.com/upload/files/6692141053.bmp

Vladimire hvala ti sto se bakces oko "mene"
[ Mihajlo Cvetanović @ 13.06.2011. 14:27 ] @
Ovo je Turbo C++, a ne Dev-C++. Nema veze, i njega je pregazilo vreme, i to teže nego Dev-C++. Guglajući sa terminom <turbo c++ using namespace std> dolazi se do zaključka da Turbo C++ ne podržava namespace std. Zato samo obriši tu liniju.

Malo objašnjenje za taj std namespace. U davna vremena čitava priča sa tim namespace-vima nije ni postojala, i sve su funkcije bile globalne. To nije problem ako je sav kod u projektu isključivo tvoj, ali je veliki problem ako želiš da iskoristiš tuđi kod, u obliku biblioteke. Biblioteke (.lib fajlovi) su mnogo fina stvar. Neko drugi napiše funkciju, a ti je samo koristiš. Ali šta biva ako koristiš dve biblioteke od dva različita izvora, a u njima stoji funkcija s istovetnim imenom? Pa ništa, nema ti spasa, jednu od te dve biblioteke prosto ne možeš da upotrebiš, u suprotnom buniće se kompajler da ne zna šta da radi sa dve funkcije koje se isto zovu. Onda su uveli ideju namespace-a i rekli ljudima da svoje funkcije stave u neki namespace po sopstvenom izboru. Čak i ako dva čoveka naprave funkciju s istim imenom, slabe su šanse da će im se i imena namespace-ova poklapati (iako ta mogućnost uvek postoji, Marfijev zakon je čudo). U skladu sa čitavom pričom sve funkcije koje su definisane C++ standardom (i koje dolaze zajedno sa kompajlerom) sada moraju da stoje u namespace-u "std". Tako i jeste u svim modernim kompajlerima.
[ diwljina @ 13.06.2011. 14:57 ] @
jos ovo http://www.balkan-ekspress.com/upload/files/2860155458.bmp
[ Mihajlo Cvetanović @ 13.06.2011. 15:31 ] @
Taj Turbo-C++ je toliko (...) da je u ovom trenutku možda jednostavnije da nam ovde pošalješ jedan listing koji je sam nastavnik napisao, i koji radi u Turbo-C++. Možda zaključimo nešto korisno.
[ X Files @ 13.06.2011. 15:37 ] @
@diwljina
Da li je problem da skines sa neta Code::Blocks i da ti sve radi?
http://www.elitesecurity.org/p2882496
[ Mihajlo Cvetanović @ 13.06.2011. 15:46 ] @
Podržavam predlog, ali sumnjam da naš sagovornik ima dovoljno autoriteta kod nastavnika da to može da sprovede. Znaš kako je bilo u školi, radi kako ti nastavnik kaže.

Uzgred, pronašao sam ovo guglajući: probaj
Code:
#include <strng.h>
umesto
Code:
#include <string.h>
(to jest bez slova i)
[ diwljina @ 13.06.2011. 16:19 ] @
Code:
#include <stdio.h>
#include <stdlib.h>
#define MAX_VELICINA 100
void ukloni_suvisne_blankove( char *neki_tekst );
void okreni_redosled_slova_teksta( char *neki_tekst );
int main(void)
{
    char niz[MAX_VELICINA];
    printf( "Otkucajte recenicu: " );
    gets( niz );
    ukloni_suvisne_blankove( niz );
    printf( "Nova recenica, sa uklonjenim blankovima:\n[POCETAK]-->%s<--[KRAJ]\n", niz );
    okreni_redosled_slova_teksta( niz );
    printf( "Nova recenica, sa okrenutim slovima:\n%s\n", niz );
    return 0;
}

void ukloni_suvisne_blankove( char *neki_tekst )
{
    int i=0;
    int j;
    while ( neki_tekst[i] != '\0' )
    {
        if ( neki_tekst[i] == ' ' )
        {
            switch ( neki_tekst[i+1] )
            {
            case '\0':
                neki_tekst[i] = '\0';
                break;
            case ' ':
                for ( j=i; neki_tekst[j] != '\0'; j++ )
                    neki_tekst[j] = neki_tekst[j+1];
                neki_tekst[j] = '\0';
                break;
            default:
                if ( i == 0 )
                {
                    for ( j=i; neki_tekst[j] != '\0'; j++ )
                        neki_tekst[j] = neki_tekst[j+1];
                    neki_tekst[j] = '\0';
                }
                else
                {
                    ++i;
                }
                break;
            }
        }
        else
        {
            ++i;
        }
    }
}
void okreni_redosled_slova_teksta( char *neki_tekst )
{
    int pocetak=0;
    int kraj=0;

    int i, duzina;
    char pomocna;
    while ( neki_tekst[pocetak] != '\0' )
    {
        ++kraj;
        if ( neki_tekst[kraj] == ' ' || neki_tekst[kraj] == '\0' )
        {
            --kraj;
            if ( pocetak !=0 )
                ++pocetak;
            for ( i=pocetak; i<=pocetak+(kraj-pocetak)/2; i++ )
            {
                pomocna = neki_tekst[i];
                neki_tekst[i] = neki_tekst[kraj-(i-pocetak)];
                neki_tekst[kraj-(i-pocetak)] = pomocna;
            }
            pocetak = ++kraj;
        }
    }
}


Mihajlo evo ovaj program sam nasao negde i radi ...
@Files, upravo ti je Mihajlo odgovorio . Verujte mi da se mucim ovde po knjigama da nadjem nesto od teorije vezano za c++, stringove i obradu teksta a kamoli zadatke...

[Ovu poruku je menjao Mihajlo Cvetanović dana 13.06.2011. u 17:36 GMT+1]
[ Mihajlo Cvetanović @ 13.06.2011. 16:42 ] @
Okej, ovde nema ništa od ++ u ovom C++. Ovo je običan C, a to je (ma šta drugi pričali) bitno različit jezik. Ne koristi se cin/cout nego gets/printf, i ne koristi se string nego char*. Onda i ti radi tako, šta da ti kažem.
[ diwljina @ 13.06.2011. 20:22 ] @
Ljudi, nasao sam neki zajednicki jezik :P sa razrednom i uzeo nesto drugo tako da mi je sada dosta olaksan posao.Hvala vam puno sto ste se trudili da mi pomognete :)

[Ovu poruku je menjao diwljina dana 14.06.2011. u 23:32 GMT+1]