Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.711.730
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
offline
Programiranje u C++-u - pitanja i odgovori

Dal mi može netko reći zašto se ovaj program ruši. Ovakva trivijalna glupost mi stvara probleme i trati vrijeme, a u knjizi je isto tak napisano...

 

#include <iostream>
using namespace std;

char* Uvecaj(char* niz){
    char* zn = niz;
    while(*zn){
       *zn = toupper(*zn);
       ++zn;
    }
    return niz;
}
int main (){
   
    char* niz = "rijec";
    cout << Uvecaj(niz) << endl;
}   

 

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozz, preko ovih "proljetnih" praznika smo za zadatak dobili napraviti nekakav program u c++ grafici, mene sad zanima dali netko zna neku stranicu sa primjerima jednostavne grafike, zato sto fkt nemam vremena za smisljanje primjera. Nasao sam neke stranice, ali imaju previse naredbi koje mi nismo radili, mi smo radili samo one osnove, one koje se nalaze u knjizi "C-jezik" od skolske knjige
Hvala na pomoci 

Moj PC  
0 0 hvala 0
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
neznam123456 kaže...

 

  Problem je u ovome:

char* niz = "rijec";

Ovo "rijec" je string literal i tipa je const char[] i zbog toga je read-only pa ga mozes samo citati, a ne i mijenjati. Ako ga hoces mijenjati onda napravi ovako:

char niz[] = "rijec";

U ovom slucaju stvaras polje tipa char, a  "rijec"  se kopira u to polje i zbog toga ga mozes mijenjati.

 

15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Koji bi mi bio najbolji način, tj kojom logikom bih najbolje išao kada bih radio konverter iz rimskih cifara u arapske i obratno?

Ja sam napisao program za konverziju iz rimskih u arapske, ali za neke primjere mi radi, a za neke ne{#}

 

 

 

#include<iostream>

#include<cstdlib>

#include<windows.h>

 

using namespace std;

 

char rimski[10];

int  niz[10];

int  i;

bool krivi=false;

 

void pretvorimo()

{

while(rimski[i]!=0)

{

if(rimski[i]== 'I')

       niz[i]=1;

 

 else if(rimski[i]== 'V')

       niz[i]=5;

 

 else if(rimski[i]== 'X')

       niz[i]=10;

 

 else if(rimski[i]== 'L')

       niz[i]=50;

 

 else if(rimski[i]== 'C')

       niz[i]=100;

 

 else if(rimski[i]== 'D')

       niz[i]=500;

 

 else if(rimski[i]== 'M')

       niz[i]=1000;

 

      else

       {

         cout<<"Krivi unos"<<endl;

         krivi=true;

         return ;

       }

 

 i++;

}

}

 

int main()

{

 

   system("COLOR f0");

 

 int n = 0,rezultat=0,x=0,rezultats;

 i=0;

 cout<<"Unesi rimski broj : ";

 cin>>rimski;

 pretvorimo();

 if(krivi)

     return 0;

 

while(niz[n]!=0)

{

if(niz[n]>=niz[n+1])

rezultat=rezultat+niz[n];

else if(niz[n]<niz[n+1])

       {

 x=niz[n+1]-niz[n];

 n++;

       }

         rezultats=rezultat+x;

 

       n++;

}

   cout<<rezultats<<endl;

 

   return 0;

}

 

 
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Sorry, greska :)

***** Maxxy *****
Poruka je uređivana zadnji put pon 25.3.2013 17:07 (Maxxy).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Hambrle kaže...

Koji bi mi bio najbolji način, tj kojom logikom bih najbolje išao kada bih radio konverter iz rimskih cifara u arapske i obratno?

Ja sam napisao program za konverziju iz rimskih u arapske, ali za neke primjere mi radi, a za neke ne{#}

 


 

U školi i drugdje si inače najviše učio rimske brojeve do 3999. Moj prijedlog iz arapskih u rimske je da dijeliš znamenke sa %10(pogledaj dolje) i onda taj broj pretvaraš u slovo ali tako da si u if ili case naredbama odredio koja znamenka je koje slovo. A što se tiče pretvaranja iz rimskih u arapske vidio sam tu da si koristio string i dobro si radio samo ne radi ti za sve brojeve pogledaj na ovom LINK-u  jer su rimski malo kompliciraniji od arapskih, i isto tako definiraš koje je slovo koja znamenka u if/case naredbi ja bi to tako napravio...

while (broj > 0) {

     int znamenka = broj%10;//razdvajanje znamenki

       broj /= 10;

}

Poruka je uređivana zadnji put pon 25.3.2013 20:45 (bandito).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
bandito kaže...

U školi i drugdje si inače najviše učio rimske brojeve do 3999. Moj prijedlog iz arapskih u rimske je da dijeliš znamenke sa %10(pogledaj dolje) i onda taj broj pretvaraš u slovo ali tako da si u if ili case naredbama odredio koja znamenka je koje slovo. A što se tiče pretvaranja iz rimskih u arapske vidio sam tu da si koristio string i dobro si radio samo ne radi ti za sve brojeve pogledaj na ovom LINK-u  jer su rimski malo kompliciraniji od arapskih, i isto tako definiraš koje je slovo koja znamenka u if/case naredbi ja bi to tako napravio...

while (broj > 0) {

     int znamenka = broj%10;//razdvajanje znamenki

       broj /= 10;

}

Hvala, budem nešt probal skemijat s tim arapskim u rimskim konverterom pa javim rezultate i ako gdje zapne {#}

Ali još uvijek bi mi dobro došao još neki savjet za konvertiranje rimskog u arapski..

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Hambrle kaže...

Hvala, budem nešt probal skemijat s tim arapskim u rimskim konverterom pa javim rezultate i ako gdje zapne {#}

Ali još uvijek bi mi dobro došao još neki savjet za konvertiranje rimskog u arapski..

Kad konvertiraš iz rimskog u arapski trebaš gledati po stringu od prvog slova prema zadnjemu i onda dodjeljivati nekoj varijabli za M + 1000 za C + 100 i tako dalje ali trebaš paziti ako ti se nalazi npr C ispred M (900) da oduzmeš 100 od 1000 a ne dodaš ...

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
bandito kaže...
Hambrle kaže...

Hvala, budem nešt probal skemijat s tim arapskim u rimskim konverterom pa javim rezultate i ako gdje zapne {#}

Ali još uvijek bi mi dobro došao još neki savjet za konvertiranje rimskog u arapski..

Kad konvertiraš iz rimskog u arapski trebaš gledati po stringu od prvog slova prema zadnjemu i onda dodjeljivati nekoj varijabli za M + 1000 za C + 100 i tako dalje ali trebaš paziti ako ti se nalazi npr C ispred M (900) da oduzmeš 100 od 1000 a ne dodaš ...

Ma znam to. Uspio sam na kraju. Hvala puno :D 

12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

zanima me kako bih mogao izracunati N-ti korjen broja T uz pomoc newtonove metode u C++ ( N prirodni, T realni broj).(npr: x_1=1;    x_{i+1}=(x_i*(N-1)+T/x_i^(N-1))/N), trebam zapisati kodu, pomoc 

 
0 0 hvala 0
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

imam pitanje koje vrlo dobar u programiranju  treba da mi uradi vrlo dobru igru o vodi i covjeku dobit ce 500 dolara ako uspjemo da prodemo poz

 
0 8 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
ensar eko kaže...

imam pitanje koje vrlo dobar u programiranju  treba da mi uradi vrlo dobru igru o vodi i covjeku dobit ce 500 dolara ako uspjemo da prodemo poz

Vjeruj mi, ne mozes napraviti dobru igru bez trunke pravopisa!

***** Maxxy *****
12 godina
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav,

U ovom programu funkcija treba u matrici pretvorit float brojeve u int. Ali nakon što se funkcija izvrši i dalje su brojevi float. Pa ak može pomoć

 

#include <iostream>
using namespace std;
float* Cijeli(float polje [3][5]){
   
    for(int i = 0; i < 3; ++i)
       for(int j = 0; j < 5; ++j)   
          static_cast<int>(polje[i][j]);
    return polje[3];      
}

int main (){
  
    float matrica [3][5] = {{1.45,2.32,3.12,4.76,5.09},
                    {3.99,4.56,5.43,7.12,9.12},
                    {6.34,4.54,3.32,1.56,0.65}
                    };
    Cijeli(matrica);
   
    for(int i = 0; i < 3; ++i){
       cout << endl;
       for(int j = 0; j < 5; ++j)
          cout << "   " << matrica[i][j];
    }   
}  

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Fali ti dodijeljivanje u funkciji:

 

polje[i][j] = static_cast<int>(polje[i][j]);

 

iako, ja bih taj cijeli program drukčije napisao:

 

#include <iostream>
using namespace std;

void Cijeli(float *polje, int br_red, int br_stup){
    for(int i = 0; i < br_red; ++i)
      for(int j = 0; j < br_stup; ++j)
        polje[i * br_stup + j] = int(polje[i * br_stup + j]);
}
int main (){
    float matrica [3][5] = {{1.45,2.32,3.12,4.76,5.09},
                {3.99,4.56,5.43,7.12,9.12},
                {6.34,4.54,3.32,1.56,0.65}
                };
    Cijeli(&matrica[0][0], 3, 5);

    for(int i = 0; i < 3; ++i){
      cout << endl;
      for(int j = 0; j < 5; ++j)
        cout << "   " << matrica[i][j];
    }
    return 0;
}

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Uspio sam :D

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
Poruka je uređivana zadnji put pet 5.4.2013 20:28 (Intelovac123).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Unosi se broj..

Treba unijeti toliko recenica..

Kako da unesem vise recenica?

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Polja stringova?

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Polja stringova?

DA..

JEdnostavno je kad unosim jednu recenicu..

getline (cin,s);
ali kad treba N recenica 

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

DA..

JEdnostavno je kad unosim jednu recenicu..

getline (cin,s);
ali kad treba N recenica 

Royalhero ti je dao rješenje.

 

Napravi polje od N stringova (gdje je N broj rečenica koji želiš upisati). Za svaki od elemenata tog polja pozovi getline. Gotovo.

 

#include <string>
#include <iostream>

using namespace std;

int main()
{
    int n;

    cout<<"Koliko recenica? ";
    cin>>n;

    cin.ignore(); //ocisti input buffer
    string *recenice = new string[n];

    //upis
    for (int i=0; i<n; i++)
        getline(cin, recenice[i]);

    //ispis
    for (int i=0; i<n; i++)
        cout<<recenice[i]<<endl;

    delete[] recenice;

    return 0;
}

 

0xBADC0DE
Poruka je uređivana zadnji put ned 7.4.2013 2:55 (rustweaver).
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Programiram u codeblocksu. I imam problem kada dodam manifest na Windowsima XP. Dakle ne pokazuje nikakve child windowe (buttone, labele, checkboxove,...), ali to se događa samo kad se program pokrene na Windowsima XP. Svejedno na kojem se OS-u program skompajlira i dalje je isto. Dakle kako napraviti da radi i na Windowsima XP, a da ima visual styles.

 

Evo mog manifesta:

 

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly

  xmlns="urn:schemas-microsoft-com:asm.v1"

  manifestVersion="1.0">

<assemblyIdentity

   name="Exe.Apps.Project"

   processorArchitecture="x86"

   version="1.0.0.0"

   type="win32"/>

<description>Project</description>

<dependency>

   <dependentAssembly>

     <assemblyIdentity

       type="win32"

       name="Microsoft.Windows.Common-Controls"

       version="6.0.0.0"

       processorArchitecture="x86"

       publicKeyToken="6595b64144ccf1df"

       language="*"

     />

   </dependentAssembly>

</dependency>

</assembly>

Poruka je uređivana zadnji put ned 7.4.2013 16:46 (cpp freak).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
cpp freak kaže...

Programiram u codeblocksu. I imam problem kada dodam manifest na Windowsima XP. Dakle ne pokazuje nikakve child windowe (buttone, labele, checkboxove,...), ali to se događa samo kad se program pokrene na Windowsima XP. Svejedno na kojem se OS-u program skompajlira i dalje je isto. Dakle kako napraviti da radi i na Windowsima XP, a da ima visual styles.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx

 

EDIT:

pretraživanje koristiti: http://www.bug.hr/forum/post/programiranje/programiranje-c-pitanja-odgovori/3411561.aspx

0xBADC0DE
Poruka je uređivana zadnji put ned 7.4.2013 16:55 (rustweaver).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
cpp freak kaže...

Programiram u codeblocksu. I imam problem kada dodam manifest na Windowsima XP. Dakle ne pokazuje nikakve child windowe (buttone, labele, checkboxove,...), ali to se događa samo kad se program pokrene na Windowsima XP. Svejedno na kojem se OS-u program skompajlira i dalje je isto. Dakle kako napraviti da radi i na Windowsima XP, a da ima visual styles.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx

 

EDIT:

pretraživanje koristiti: http://www.bug.hr/forum/post/programiranje/programiranje-c-pitanja-odgovori/3411561.aspx

 

već sam gledao ovaj link : http://www.transmissionzero.co.uk/computing/win32-apps-with-mingw/

 

i kad kompajliram piše mi error: unknown type name 'INITCOMMONCONTROLSEX'

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
cpp freak kaže...
i kad kompajliram piše mi error: unknown type name 'INITCOMMONCONTROLSEX'

Da si googlao INITCOMMONCONTROLSEX otkrio bi da je on definiran u commctrl.h headeru...

0xBADC0DE
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
cpp freak kaže...
i kad kompajliram piše mi error: unknown type name 'INITCOMMONCONTROLSEX'

Da si googlao INITCOMMONCONTROLSEX otkrio bi da je on definiran u commctrl.h headeru...

googlao sam, i znam...

 

evo što imam includano:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#include <windows.h>

#include <process.h>

#include <commctrl.h>

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
cpp freak kaže...

googlao sam, i znam...

 

evo što imam includano:

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#include <windows.h>

#include <process.h>

#include <commctrl.h>

 

Hoćeš reći da si dodao commctrl.h header i da ti se i dalje compiler buni da INITCOMMONCONTROLSEX nije definiran?

 

Potraži ga u commtrl.h headeru, mora biti tamo. Čak ga i mingw 3.x ima definiranog. Glupo pitanje ali jesi li commctrl.h includeao u pravu source datoteku?

 

Ako ti ipak nekim čudom nedostaje onda si ga sam definiraj u source datoteci u kojoj ga koristiš:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb775507%28v=vs.85%29.aspx

 

EDIT: ups, zayeb, nisam vidio da je definicija umotana oko makroa _WIN32_IE kojeg moraš definirati na 0x0300

 

Dakle, iznad linije u kojoj includeaš commctrl.h datoteku stavi:

#define _WIN32_IE 0x0300

 

0xBADC0DE
Poruka je uređivana zadnji put ned 7.4.2013 17:58 (rustweaver).
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Dodao sam sam definiciju INITCOMMONCONTROLSEX i onda ga prepoznaje. 

No i dalje mi daje ovu grešku : undefined reference to `InitCommonControlsEx@4'|

 

Znači kao da funkcija nije deklarirana. Može li mi netko dati svoj commctrl.h ? već sam probao 4 različita s neta i ne radi

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
cpp freak kaže...

No i dalje mi daje ovu grešku : undefined reference to `InitCommonControlsEx@4'|

Linker error.

 

InitCommonControleEx funkcija se nalazi u libcomctl32.a import biblioteci. Linkaj svoj program s tom bibliotekom (moraš imati postavljeni projekt da bi mogao normalno linkati).

 

Sve je u redu sa commctrl.h headerom, nisi ga trebao zamjenjivati, vrati originalni koji si imao...

 

I pogledaj što sam dodao u prethodni post, ne trebaš definirati svoju strukturu nego samo makro...

0xBADC0DE
Poruka je uređivana zadnji put ned 7.4.2013 18:11 (rustweaver).
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Hvala ti puno sada radi i na XP-u, i baš lijepo izgleda.

 

Imam još jedno pitanje, dakle hoću ikonu za moj program.

Dodao sam 

 

1 ICON "icon.ico"

 

u moj .rc file, no ta ikona se pojavljuje samo u windows exploreru (kada pokrenem program pored imena je ona ikona kao iu command prompta)

 
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

Da si googlao INITCOMMONCONTROLSEX otkrio bi da je on definiran u commctrl.h headeru...

Jel samo meni ovo izgleda perverzno ili? xD

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
cpp freak kaže...
1 ICON "icon.ico"

 

 

u moj .rc file, no ta ikona se pojavljuje samo u windows exploreru (kada pokrenem program pored imena je ona ikona kao iu command prompta)

Za to moraš inicijalizirati dva člana WNDCLASSEX strukture koji definiraju veliku i malu ikonu aplikacije (obična WNDCLASS struktura ima samo član koji definira veliku ikonu)

 

Recimo da se ta struktura u tvom programu zove 'wc', tada samo dodaš:

 

wc.hIcon=LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
wc.hIconSm=(HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON), IMAGE_ICON, 16, 16, 0);

 

Negdje prije RegisterClassEx (za običan WNDCLASS koristiš RegisterClass)

 

Samo obrati pažnju da prvi član WNDCLASSEX strukture treba biti postavljen na veličinu te strukture, dakle ako koristiš WNDCLASSEX a ne WNDCLASS trebaš još imati i:

 

wc.cbSize=sizeof(WNDCLASSEX);

 

Btw. u ovom primjeru pretpostavljeno je da imaš ikonu definiranu kao IDI_MYICON, ako ne koristiš makroe za imenovanje resursa (a trebao bi, jer je lakše kad ti se nakupi puno resursa), onda samo zamijeni IDI_MYICON sa brojem koji koristiš za resusrs ikone (u tvom slučaju je to broj 1)

 

Ako želiš definirati makro ime za tu ikonu onda napravi slijedeće:

 

napravi header resource.h i u njega stavi:

#define IDI_MYICON 1

 

U resource datoteci dodaj:

#include "resource.h"

i izmijeni:

1 ICON "icon.ico"

u:

IDI_MYICON "icon.ico"

 

I onda još samo dodaš resource.h header u svoj source file, i možeš koristiti makroe kao imena resusrsa.

0xBADC0DE
E-mail:
Lozinka:
 
vrh stranice