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
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.284
- |
- čitano: 1.945.284
- |
- moderatori:
XXX-Man
- +/- sve poruke
- ravni prikaz
- starije poruke gore
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.
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;
}
Sorry, greska :)
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;
}
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..
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š ...
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
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
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
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!
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];
}
}
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;
}
Uspio sam :D
Unosi se broj..
Treba unijeti toliko recenica..
Kako da unesem vise recenica?
Polja stringova?
Polja stringova?
DA..
JEdnostavno je kad unosim jednu recenicu..
getline (cin,s);
ali kad treba N recenica
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;
}
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>
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
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'
Da si googlao INITCOMMONCONTROLSEX otkrio bi da je on definiran u commctrl.h headeru...
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>
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
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
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...
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)
Da si googlao INITCOMMONCONTROLSEX otkrio bi da je on definiran u commctrl.h headeru...
Jel samo meni ovo izgleda perverzno ili? xD
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.
Radi za ikonu u programskoj traci, ali i dalje ne pokazuje ikonu baš na windowu od programa :S
probao sam i neke druge tutoriale http://www.winprog.org/tutorial/simple_window.html
i dalje isto
