C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Мене на факс прво шо почнаа да ме учат беше структурно програмирање Ц...немаше ексел формули, аксес извештаи ниту па паскал програмчиња (до душа у средно нешо чепкав ама ептен малце). Мислам дека ако сакаш да научиш и имаш желба за програмирање можеш да почнеш со Ц/Ц++....:toe:

п.с. Јас сум од оние rookie програмерчиња шо ги спомна така да може и грешам :)

Јас сеуште стојам на моето мислење дека C/C++ не е добар старт за програмирање. Прв чекор е да го напреднеш работењето со компјутерот. Второ е да почнеш да го користиш компјутерот за логички проблеми а со тоа и да набилдаш логика. Понатака можеш да почнеш со некој лесен јазик како бејзик или паскал. Дури после може да стане муабет за Ц.

Во моите училишни денови, C++ ми беше прилично тежок за разбирање со оглед на моите ефтини познавања на програмирањето (Бејзик). Ми требаше време додека го разработив ВБ-то па почнав да ги укапирам работите кај C++.
Друг пат повеќе, сега идам на хепи брдеј партито. Чирс.
 
А едно 2000 студенти и едно 20 професори што почнуваат со Ц се глупи. ОК.
 
А едно 2000 студенти и едно 20 професори што почнуваат со Ц се глупи. ОК.
Nope. 99% од студентите доаѓат на факс со веќе набилдан паскал. Оние коишто доаѓаат со нула познавање од програмирањето, заглавуваат или шибаат на друг смер (барем оние кои јас ги познавам).
Има и исклучоци, пример еден мој колега уште од средношколските денови пука на C++, па сега ме шиша.

Ајде сега ти се замисли како ептен почетник во програмирање и ти е дадена задача да направиш програма која ќе создаде и испечати матрица со произволни (ама теоретски неограничени) димензии, со елементи производ на бројот на редот и бројот на колоната.

Еве го решението во три јазика: Basic, Java и C++.
Просуди самиот каде е полесно

Basic:
Код:
Dim pole() As Integer
Print "Vnesi broj na redovi: "
Input dimX
Print "Vnesi broj na koloni: "
Input dimY
ReDim pole(dimX, dimY) As Integer
For I=1 To dimX
    For J=1 to dimY
        pole(I,J) = I*J
    Next J
Next I

'pecatenje
For I=1 To dimX
    For J=1 to dimY
        Print pole(I,J);" ";
    Next J
    Print ""
Next I
End

Java:
Код:
public static void main(String[] args) {
        // TODO Auto-generated method stub
        int dimX, dimY, pole[][];
        dimX = Integer.parseInt(JOptionPane.showInputDialog("Vnesi broj na redovi"));
        dimY = Integer.parseInt(JOptionPane.showInputDialog("Vnesi broj na koloni"));
        pole = new int[dimX][dimY];
        for (int i=0; i<dimX; i++)
            for (int j=0; j<dimY; j++)
                pole[i][j] = (i+1) * (j+1);
        
        //pecatanje
        for (int i=0; i<dimX; i++)
        {
            for (int j=0; j<dimY; j++)
                System.out.print(pole[i][j]+" ");
            System.out.println("");
        }
        
    }

C++, прво решение, онака како што ТРЕБА да биде
Код:
#include <iostream>
#include <vector>
using namespace std;

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    vector < vector <int> > pole;
    for (int i=0; i<dimX; i++)
    {
        vector <int> vnPole;
        for (int j=0; j<dimY; j++)
            vnPole.push_back((i+1)*(j+1));
        pole.push_back(vnPole);
    }
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[i][j]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}

C++ второ решение. Пократко, ама грдо стои.
Код:
#include <iostream>
#include <vector>
using namespace std;

inline int getInd(int x, int y, int maxY)
{
    return x * maxY + y;
}

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    int *pole = new int[dimX*dimY];
    
    for (int i=0; i<dimX; i++)
        for (int j=0; j<dimY; j++)
            pole[getInd(i,j,dimY)] = (i+1) * (j+1);
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[getInd(i,j,dimY)]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}

C++ е замислен и остварен како јазик близок со асемблерот. Работи на ниско ниво, може директно да комуницира со меморијата и како последица на тоа пројавува и одлични перформанси. Кај C/C++ се појавува и терминот странички ефекти што значи дека треба да се биде исклучително внимателен при програмирањето бидејќи може да ти настанат грешки кои директно нема да бидат предизвикани од ништо.
Тежината на програмските јазици иде обратно пропорционално од нивното ниво. C/C++ може се на најниско ниво од вишите програмски јазици, па според тоа не ни очекувајте дека ќе бидат лесни за учење.
 
А едно 2000 студенти и едно 20 професори што почнуваат со Ц се глупи. ОК.
Морам да те цитирам... Мислиш дека се што се учи на факс треба да се учи? Има еден куп работи што ги учиме на памет а ако некогаш ти притребаат (многу вероватно е дека никогаш нема ни да ти притребаат) ке си ги прочиташ од книга...
 
баш затоа сите професори ти дозволуваат литература на колоквиум.
 
Nope. 99% од студентите доаѓат на факс со веќе набилдан паскал. Оние коишто доаѓаат со нула познавање од програмирањето, заглавуваат или шибаат на друг смер (барем оние кои јас ги познавам).
Има и исклучоци, пример еден мој колега уште од средношколските денови пука на C++, па сега ме шиша.

Ајде сега ти се замисли како ептен почетник во програмирање и ти е дадена задача да направиш програма која ќе создаде и испечати матрица со произволни (ама теоретски неограничени) димензии, со елементи производ на бројот на редот и бројот на колоната.

Еве го решението во три јазика: Basic, Java и C++.
Просуди самиот каде е полесно

C++, прво решение, онака како што ТРЕБА да биде
Код:
#include <iostream>
#include <vector>
using namespace std;

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    vector < vector <int> > pole;
    for (int i=0; i<dimX; i++)
    {
        vector <int> vnPole;
        for (int j=0; j<dimY; j++)
            vnPole.push_back((i+1)*(j+1));
        pole.push_back(vnPole);
    }
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[i][j]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}
C++ второ решение. Пократко, ама грдо стои.
Код:
#include <iostream>
#include <vector>
using namespace std;

inline int getInd(int x, int y, int maxY)
{
    return x * maxY + y;
}

int main(int arg, char *agrv[])
{
    int dimX, dimY;
    cout <<"Vnesete broj na redovi: ";cin >>dimX;
    cout <<"Vnesete broj na koloni: ";cin >>dimY;
    int *pole = new int[dimX*dimY];
    
    for (int i=0; i<dimX; i++)
        for (int j=0; j<dimY; j++)
            pole[getInd(i,j,dimY)] = (i+1) * (j+1);
    
    //pecatenje na gotovata matrica
    for(int i=0; i<dimX; i++)
    {
        for (int j=0; j<dimY;j++)
            cout <<pole[getInd(i,j,dimY)]<<' ';
        cout <<endl;
    }
    system("PAUSE");
    return 0;
}
C++ е замислен и остварен како јазик близок со асемблерот. Работи на ниско ниво, може директно да комуницира со меморијата и како последица на тоа пројавува и одлични перформанси. Кај C/C++ се појавува и терминот странички ефекти што значи дека треба да се биде исклучително внимателен при програмирањето бидејќи може да ти настанат грешки кои директно нема да бидат предизвикани од ништо.
Тежината на програмските јазици иде обратно пропорционално од нивното ниво. C/C++ може се на најниско ниво од вишите програмски јазици, па според тоа не ни очекувајте дека ќе бидат лесни за учење.
Немам ништо против, али мислам дека не мора нон стоп да им викаш на луѓето да не почнуваат со Ц/Ц++, остај ги бе друже, сами ќе си заклучат со време дали се способни за програмирање во тие јазици или не се... Или тие пак што се курчат дека се големи програмери, се ќе се види ко ќе седнат на работно место... :) Башка, некој со помала самодоверба коа ќе ги чита твојте постој ќе се откажи скрос од програмирањето... :)
Еве, јас сум почетник во програмирањето со Ц++ (во средно немам учено програмирање), па сепак не сум од тие што се откажале од смерот...
И мислам дека можи попросто да се реши то со матрицата погоре... Некој што не разбира ич програмирање ќе се уплаши од тој хедерот вектор и тие пуш-бек функциите, па еве да видат луѓето дека решението во C++ не е толку страшно како што изгледа :))

Код:
#include <iostream>

using namespace std;

int main()
{
    int x,y;
    cout << "Vnesi Broj na redovi: ";
    cin >> x;
    cout << "Vnesi broj na koloni: ";
    cin >> y;
    int niza[x][y];
    for(int i=0; i<x; i++)
    {
            for(int j=0; j<y; j++)
            niza[i][j]=(i+1)*(j+1);
    }
    for(int i=0; i<x; i++)
    {
            for(int j=0; j<y; j++)
            cout << niza[i][j] << " ";
            cout << endl;
    }
    system("PAUSE");
    return 0;
}
Можда не сум достоен да кажувам јас дали е тежок C++ ( и логиката на размислувањето во програмирањето ) или не е, али ако сакаш да го научиш нештото, ако имаш воља и трпение, ќе го научиш...
 
Можда не сум достоен да кажувам јас дали е тежок C++ ( и логиката на размислувањето во програмирањето ) или не е, али ако сакаш да го научиш нештото, ако имаш воља и трпение, ќе го научиш...

Ај вака да бидам на страна на двајцата малку можи:
1. Ц е садистичкималку за почетници,амасе сложвамако сакаш данаучиш како функционираат работите добро е да го учиш Ц прв.
2. Би додал мал вовед Паскал колку за да научиш да склопваш програми. Како се извршва кодот, шо е циклус, шо е услов , шо е функција и слично. Значи без некои поголеми комплицирања.

Значи веднаш штом ќе научиш да ги користиш овие работи скокај на Ц и копај.
 
Немам ништо против, али мислам дека не мора нон стоп да им викаш на луѓето да не почнуваат со Ц/Ц++, остај ги бе друже, сами ќе си заклучат со време дали се способни за програмирање во тие јазици или не се... Или тие пак што се курчат дека се големи програмери, се ќе се види ко ќе седнат на работно место... :) Башка, некој со помала самодоверба коа ќе ги чита твојте постој ќе се откажи скрос од програмирањето... :)
Фала богу не ставам некој на клада ако почне со C++. Едноставно сакам да споделам искуство и да дадам совет. Малку поригорозно, признавам. Исфрустриран сум од некои од оние програмери за кои и ти велиш дека само се курчат а уствари појма немат. :toe:

И мислам дека можи попросто да се реши то со матрицата погоре... Некој што не разбира ич програмирање ќе се уплаши од тој хедерот вектор и тие пуш-бек функциите, па еве да видат луѓето дека решението во C++ не е толку страшно како што изгледа :))

:nenene: Ова:
Код:
int niza[x][y];
не работи кај сите компајлери и е главна причина што го избрав токму овој пример. Твојот код работи на Dev-C++, ама на VC++ 6 не. ANSI C и C++ не подржаваат повеќедимензионални динамични полиња. Дозволена им е динамичност само во 1 димензија.
Сепак супер ќе ти речам, се гледа дека имаш познавања и сакаш да направиш поента. Продолжи така и ќе те проверам на некоја поасална тема. :salut:
 
Види види, интересна работа... Не сум знаел за то со динамичните полиња... Фала многу за информацијата :). Баш ми е ќеф ко ќе учам од поискусни од мене...
А за ова со "програмерите" , мислам дека не е само со нив случајот... Луѓе од тој тип има во секоја сфера од животот, кои се прават дека знаат нешто, а уствари не знаат шо збораат... И јас така порано се нервирав и се расправав со такви луѓе ( за други области од животот ), ама не видов некоја поента во то, па оттогаш ги игнорирам...
 
Ме интересира како можам да вметнам кирилична подршка во C. Може ли некој да ми помогне?
 
Ме интересира како можам да вметнам кирилична подршка во C. Може ли некој да ми помогне?
ANSI C? Конзолна апликација? DOS?
Допрецизирај се.
Знам еднаш успеав да направам конзолна апикација со кирилична подршка под VC++.NET 2005 под Windows XP. Само дали користев нешто посебно или онака го испукав, не се сеќавам.
Ако ти треба тоа кажи, па ќе видиме што ќе направавиме.
 
Ептен е трики ова. Ако добро ми држи сеќавањето мислам дека програмирањето идеше со впишување на апла карактери со кирилична подршка, но финтата е што при покренувањето на системот имаше две наредби за подесување на codepage. Овие се независни од програмата.

За наредбите и објаснување тука.
Она што ти треба:
MODE CON[:] CODEPAGE PREPARE ((nnn) filename)
Prepare codepage nnn from the specified file.
The format of the files are .cpi and they are usually stored in C:\FDOS\CPI.
For instance, codepage 860 is in EGA9.CPI. So you might use:
MODE CON: CODEPAGE PREPARE ((860) c:\fdos\cpi\ega9.cpi).
See the codepage information pack for information
about the available codepages and cpi files.

MODE CON[:] CODEPAGE SELECT=nnn
Activate codepage nnn, which must have been previously prepared with
PREPARE.


За кириличен codepage е 1251 под windows, а за DOS, не сум сигурен ама мислам дека е 855.

Ова ти е упатство, е сега како конкретно, гуглај, барај и пробувај.

off-topic: Абе, има некој од постарата генарација програмери на форумов?
 
Е вака сеа... го читам ова и онака си се чудам што пишувате :toe::pos2:. Може ли малце да идеме од нулата па нагоре пошто вака само ме збунува. Како прво може ли да ми кажете кој програми треба да ги побарам за да можам да праксирам кодови ? Второ да ми дадете некој команди и трето да ми дадете некој пример да се обидам да го направам... пошто вака не иде. Поздрав и фала :helou:
 
Е вака сеа... го читам ова и онака си се чудам што пишувате :toe::pos2:. Може ли малце да идеме од нулата па нагоре пошто вака само ме збунува. Како прво може ли да ми кажете кој програми треба да ги побарам за да можам да праксирам кодови ? Второ да ми дадете некој команди и трето да ми дадете некој пример да се обидам да го направам... пошто вака не иде. Поздрав и фала :helou:
Има тема за ова, само треба време да се пополни.
 

Kajgana Shop

Back
На врв Bottom