[ borlland @ 24.11.2007. 13:40 ] @
Radi se o programu koji treba da trazi ime i na osnovu njega, npr. da ispise pozdrav zaokruzen kao dole.
Lijeva stranica pravougaonika treba da bude kao desna a nesto ne moze!

*************
* *
* Zdravo, Ana! *
* *
*************


Ovaj program sam nasao u knjizi "Efikasno programiranje na jeziku C++" od Andrew Koenig ali nema sanse da ga Borland 4.5. pokrene a i neki dijelovi kod su mi pocudni. Npr. deklaracija 'string name' koju u mom borlandu uopste ne prepoznaje, isto kao da je ovo starija verzija koda.

Code:

#include <iostream>
#include <string>

using std::cin;         using std::endl;
using std::cout;        using std::string;

int main()
{
    cout << "Unesi ime: ";

    string name;
    cin >> name;

    // pravi poruku koju hocemo da ispisemo
    const string greeting = "Zdravo, " + name + "!";

    // broj razmaka oko pozdrava
    const int pad = 1;

    // broj redova i kolona koje treba ispisati
    const int rows = pad * 2 + 3;
    const string::size_type cols = greeting.size() + pad * 2 + 2;

    // ispisuje prazan red da bi odvojio ulaz i izlaz
    cout << endl;

    // ispisuje broj redova jednak vrijednosti promjenljive rows
    // invarijanta: broj do sada ispisanih redova jednak je vrijednosti promjenljive r
    for (int r== 0; r != rows, ++r)

        string::size:type c = 0;

        // invarijanta: broj do sada ispisanih znakova u tekućem redu
        // jednak je vrijednosti promjenljive c
        while (c != cols) {

            // da li je vrijeme da se ispise pozdravna poruka?
            if (r == pad + 1 && c == pad +1) {
                cout << greeting;
                c += greeting.size();
            } else {

                // da li smo na ivicama?
                if ( r == 0 || r == rows - 1 || c == 0 || c == cols - 1)
                    cout << "*";
                else
                    cout << " ";
                ++c;
            }
        }

        cout << endl;
    }
    return 0;
}
[ X Files @ 24.11.2007. 14:34 ] @
Zasto koristis prepotopski Borland C++ 4.5 ?
Bolje uzmi recimo DevC++ ako ti je ideja da uvezbavas skolske primere. Doduse, i on je prestao da se razvija, ali je i dalje aktuelan sto se tice pridrzavanja standarda.

Kod koji si dao sam 'propustio' kroz DevC++ i bilo je nekoliko gresaka koje si napravio u kucanju. Uglavnom u linijama:
Code:

    for (int r== 0; r != rows, ++r) // <--- treba jedan znak jednakosti, treba tacka zarez, a ne zarez
    // <--- treba pocetak bloka {
        string::size:type c = 0; // <--- treba donja crta a ne dve tacke, itd...


Probaj ovo:
Code:

#include <iostream>
#include <string>

using std::cin;         using std::endl;
using std::cout;        using std::string;

int main()
{
    cout << "Unesi ime: ";

    string name;
    cin >> name;

    // pravi poruku koju hocemo da ispisemo
    const string greeting = "Zdravo, " + name + "!";

    // broj razmaka oko pozdrava
    const int pad = 1;

    // broj redova i kolona koje treba ispisati
    const int rows = pad * 2 + 3;
    const string::size_type cols = greeting.size() + pad * 2 + 2;

    // ispisuje prazan red da bi odvojio ulaz i izlaz
    cout << endl;

    // ispisuje broj redova jednak vrijednosti promjenljive rows
    // invarijanta: broj do sada ispisanih redova jednak je vrijednosti promjenljive r
    for (int r=0; r != rows; ++r)
    {
        string::size_type c = 0;

        // invarijanta: broj do sada ispisanih znakova u tekuæem redu
        // jednak je vrijednosti promjenljive c
        while (c != cols) {

            // da li je vrijeme da se ispise pozdravna poruka?
            if (r == pad + 1 && c == pad +1) {
                cout << greeting;
                c += greeting.size();
            } else {

                // da li smo na ivicama?
                if ( r == 0 || r == rows - 1 || c == 0 || c == cols - 1)
                    cout << "*";
                else
                    cout << " ";
                ++c;
            }
        }

        cout << endl;
    }

    system("PAUSE");
    return EXIT_SUCCESS;
}

[ osmania @ 24.11.2007. 20:19 ] @
Xfile kazez da je i Devc++ se ne razvija???
koji je sada aktuelan compiler i da se bas ide u korak sa vremenom i informatikom?
sta preporucujes??? Ne znam eclipse da li bi bilo ok ???
ili??

hvala puno:)
[ icobh @ 25.11.2007. 00:02 ] @
Kad ste se već dotakli DevCpp-a i Borlanda, da i ja razriješim neke stvari koje znam iz ličnog iskustva. Dev-CPP je samo IDE, ili možda RAD za MinGW. MinGW (Minimalist GNU for Windows) se i dalje razvija, kao i Dev-CPP, doduše u WX varijanti...

Drugo što sam primjetio a to jeste, da se MinGW ne pridržava osnovnog pravila za C/C++ programiranje. Znači, ono što ne mora, to se i ne piše! Ako ja ne napišem prije imena f-je nikakav tip, podrazumijevani je int, dok to za MinGW ne važi. Zato sam napravio jedan IDE za svoje potrebe te koristim BCC 5.5.

P.S: Još jedna stvar, a to je da BCC kompajlira izuzetno brže nego GCC...

[Ovu poruku je menjao icobh dana 25.11.2007. u 09:52 GMT+1]
[ borlland @ 25.11.2007. 10:20 ] @
Citat:
osmania: Xfile kazez da je i Devc++ se ne razvija???
koji je sada aktuelan compiler i da se bas ide u korak sa vremenom i informatikom?
sta preporucujes??? Ne znam eclipse da li bi bilo ok ???
ili??

hvala puno:)


I mene ovo zanima, ali ja mislim da je Visual Studio 2005 / 08 najbolje, ovaj moj kod je odma proletio.
[ Eurora3D Team @ 27.11.2007. 01:23 ] @
Ovo sto je X Files ispravio prolazi bez problema na Mingw (mingw32-g++ / CodeBlocks IDE)
[ Exit @ 27.11.2007. 11:25 ] @
Mislim da je CodeBlocks sa MinGW odlican za sve skolske primjere
http://www.codeblocks.org