Nisam kopirao niciji kod samo sam umjesto onog ubacio ovo njegovo i nije htjelo i ja onda kopiram njegov kod kad ono hoce ..
Ne znam zasto
Nisam kopirao niciji kod samo sam umjesto onog ubacio ovo njegovo i nije htjelo i ja onda kopiram njegov kod kad ono hoce ..
Ne znam zasto
Sta mi u programu ne valja?
Program treba da ispisuje cifre bilo kojeg broja?
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i,n,k,niz[100];
cout<<"Unesi N"<<endl;
cin>>n;
while (n>0) {
k=1;
niz[k]=n%10;
n=n/10;
k=k+1;
}
for (i=k-1;i<1;i--)
{
cout<<niz[i]<<endl;
}
system ("PAUSE");
return 0;
}
Greška je u tome što k inicijaliziraš unutar while petlje. Tako će svaki put kad uđeš u while k postati 1 i znamenka će se spremiti na niz[1].
k=0 treba ići izvan while petlje, a i ovaj ispis mi malo smrdi :D Uvjet bi trebao biti i>=0, a ne i<1 koliko mi se čini :D
Greška je u tome što k inicijaliziraš unutar while petlje. Tako će svaki put kad uđeš u while k postati 1 i znamenka će se spremiti na niz[1].
k=0 treba ići izvan while petlje, a i ovaj ispis mi malo smrdi :D Uvjet bi trebao biti i>=0, a ne i<1 koliko mi se čini :D
Hvala sad radi.
http://bhoi.net/Zadaci/JBHOI%202009/tablica.pdf
Da li neko zna kako da napravim ovu tablicu u ispisu ali bez koristenja grafike..Broj isprekidanih ctrica se povecava sa brojem cifara broja ..
Brojeve lako izracunam ali ne znam kako tablicu napravit?
Pretvori brojeve iz zadnjeg reda u stringove i odredi koliko ima znakova u kojem. Na te brojeve dodaj 2 za lijevo i desno prazno mjesto. I tek nakon toga kreni u ispisivanje svega s tim da svaki broj u određenom stupcu mora zauzeti traženi broj mjesta s desnim poravnanjem.
Ima li neko da bi mi kupio Demistificirani C++ 3. izdanje ,pa poslao ...
Ja bi uplatio pare u banku ;)
Moze li se iz Elementa naruciti direktno u BiH posto su ovi distributeri za BiH govna velika .
http://bhoi.net/Zadaci/JBHOI%202009/tablica.pdf
Da li neko zna kako da napravim ovu tablicu u ispisu ali bez koristenja grafike..Broj isprekidanih ctrica se povecava sa brojem cifara broja ..
Brojeve lako izracunam ali ne znam kako tablicu napravit?
Pokušavao sam poslati odgvovor na ovu poruku i kod koji recimo crta tablicu množenja pomoću petlji sali jednostavno mi ne prihvaća poslani kod iako sam ga milion puta formatirao kao običan tekst i sad sam doslovno po....io!!!! Tako da odustajem ,ne znam da li je u forumu greška ili gdje već ,katastrofa mi se digao tlak
http://bhoi.net/Zadaci/JBHOI%202009/tablica.pdf
Da li neko zna kako da napravim ovu tablicu u ispisu ali bez koristenja grafike..Broj isprekidanih ctrica se povecava sa brojem cifara broja ..
Brojeve lako izracunam ali ne znam kako tablicu napravit?
#include <cstdio>
void linija(int broj, int kvadrat, int kub) {
int i;
printf("+");
for(i=0; i<broj+2; i++)
printf("-");
printf("+");
for(i=0; i<kvadrat+2; i++)
printf("-");
printf("+");
for(i=0; i<kub+2; i++)
printf("-");
printf("+\n");
}
int main () {
int prvi, zadnji, pom, i;
int broj = 0, kvadrat = 0, kub = 0;
do {
scanf("%d %d", &prvi, &zadnji);
} while(prvi < 1 || prvi > 100 || zadnji < 1 || zadnji > 100 || prvi > zadnji);
printf("\n");
pom = zadnji;
while(pom != 0) {
pom /= 10;
broj++;
}
pom = zadnji*zadnji;
while(pom != 0) {
pom /= 10;
kvadrat++;
}
pom = zadnji*zadnji*zadnji;
while(pom != 0) {
pom /= 10;
kub++;
}
linija(broj, kvadrat, kub);
for(i=prvi; i<=zadnji; i++) {
printf("| %*d | %*d | %*d |\n", broj, i, kvadrat, i*i, kub, i*i*i);
linija(broj, kvadrat, kub);
}
return 0;
}
Ako će biti kakvih nejasnoća u vezi koda, pitaj.
P.S. - ne znam jesam li dobro includeao library pošto programiram u C-u.
Nase resenje ...
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
int cifara(int x) //funkcija koja izdvaja broj cifara
{
int c=1;
while(x/10>0)
{
c++;
x=x/10;
}
return c;
}
void kolona1(int a) //funkcija koja ispisuje redove znakova + i -
{
int j;
cout<<"+";
for(j=1;j<cifara(a)+3;j++)
cout<<"-";
cout<<"+";
for(j=1;j<cifara(a*a)+3;j++)
cout<<"-";
cout<<"+";
for(j=1;j<cifara(a*a*a)+3;j++)
cout<<"-";
cout<<"+";
}
void kolona2(int y,int m) //funkcija koja ispisuje redove sa brojevima i /
{
int j,ind;
//prva kolona
cout<<"/ ";
ind=cifara(m)-cifara(y)+1;
for(j=1;j<=cifara(m*m*m);j++)
if (j==ind)
{
cout<<y;
break;
}
else cout<<" ";
//druga kolona
cout<<" / ";
ind=cifara(m*m)-cifara(y*y)+1;
for(j=1;j<=cifara(m*m*m);j++)
{
if (j==ind)
{
cout<<y*y;
break;
}
else cout<<" ";
}
//treca kolona
cout<<" / ";
ind=cifara(m*m*m)-cifara(y*y*y)+1;
for(j=1;j<=cifara(m*m*m);j++)
if (j==ind)
{
cout<<y*y*y;
break;
}
else cout<<" ";
cout<<" /";
}
main()
{
int a,b,i;
cin>>a>>b;
for(i=a;i<=b;i++)
{
cout<<endl;
kolona1(b);
cout<<endl;
kolona2(i,b);
}
cout<<endl;
kolona1(b);
cout<<endl;
system("pause");
return 0;
}
Kako da oredim poziciju max clana niza?
Kako da oredim poziciju max clana niza?
najveci = niz[0];
for(i=1; i < brojClanovaNiza; i++) {
if(niz[i] > najveci)
najveci = niz[i];
}
for(i=0; i < brojClanovaNiza; i++) {
if(najveci == niz[i]) {
printf("Max clan niza je na %d. mjestu u nizu, i njegova pozicija u nizu (ne adresa!) "
"ostaje spremljena u varijabli 'i'", i);
break;
}
}
Ne trebaš dvije petlje, samo u prvoj petlji uvedi varijablu index
najveci = niz[i];
index = i;
Jeli mi može netko preporučit dobru literaturu na internetu za naučit više o formama ?
Jeli mi može netko preporučit dobru literaturu na internetu za naučit više o formama ?
Jojojoj, ako radiš C# i Win Forme, što postavljaš u ovu temu, odluči se C# ili C++...
Zamolio bih nekoga tko bi bio voljan, da mi napiše C++ programčić koji bi putem 3 niti na ekranu ispisao ABC, svaka nit po 1 slovo.
Cijenio bih ako bi program radio u Visual Studio 2008. Hvala.
Onda potraži na google-u MFC threads.
trebalo bi mi ako neko može da napiše program za dev c++ za zamjenu mjesta varijabli.. (ne onak ko na onom primjeru sa pićima i prelijevanjem kad uvodimo novu varijablu) nego da imamo samo a i b i da im se zamijene mjesta pomoću zbrajanja (i oduzimanja ak treba to)..
trebalo bi mi ako neko može da napiše program za dev c++ za zamjenu mjesta varijabli.. (ne onak ko na onom primjeru sa pićima i prelijevanjem kad uvodimo novu varijablu) nego da imamo samo a i b i da im se zamijene mjesta pomoću zbrajanja (i oduzimanja ak treba to)..
Jedino što mi pada na pamet je xor (isključivo ili). Naime vrijedi identitet da je:
x^y^y=x. I na tome principu možeš(u teoriji) brzo zamijeniti dvije varijable bez upotrebe treće. Npr. imaš dvije varijable a i b:
a ^= b
b ^= a
a ^= b
Ovo ^= znači ako npr. imaš x^=y to je ustvari x = x^y. Sada samo trebaš to prepisati u c++. Znak za xor u c++ je ^.
nisam neki maher za te stvari, al ovo čak i kontam.. hvala :)
Zbog situacije kada nastaje preljev brojevne kružnice (brojevi su veliki) ne postoji metoda kojom se dvije varijable mogu zamjeniti direktno već treba postojati pomoćna.
Pozdrav raja :)
Imam jedan problem pa bih vas zamolio za pomoc!
Trebam implementirati funkciju int*umetnibroj(int*niz,int duzina, int broj);
Zadatak kaze da broj koji smo unjeli moramo staviti u niz, prosljedjeni niz mora biti unaprijed sortiran
i nakon umetanja broja on mora ostati sortiran! Jos jedna napomena: U zadatku ne smijemo koristiti algoritme za sortiranje, to je ustvari i jedini problem za mene, posto ne znam kako bi inace umetnuo broj u niz a da ostane sortiran!
Eee, hvala unaprijed i pozdrav :)
Pozdrav raja :)
Imam jedan problem pa bih vas zamolio za pomoc!
Trebam implementirati funkciju int*umetnibroj(int*niz,int duzina, int broj);
Zadatak kaze da broj koji smo unjeli moramo staviti u niz, prosljedjeni niz mora biti unaprijed sortiran
i nakon umetanja broja on mora ostati sortiran! Jos jedna napomena: U zadatku ne smijemo koristiti algoritme za sortiranje, to je ustvari i jedini problem za mene, posto ne znam kako bi inace umetnuo broj u niz a da ostane sortiran!
Eee, hvala unaprijed i pozdrav :)
evo mi main funkcije:
int main(){
cout<<"unesite duzinu niza"<<endl;
int duzina;
cin>>duzina;
cout<<"ispunite niz"<<endl;
int *niz=new int[duzina];
for(int i=0; i<duzina; i++){
cin>>niz[i];}
cout<<"unesite broj"<<endl;
int broj;
cin>>broj;
system("Pause");
return 0;}
evo mi main funkcije:
int main(){
cout<<"unesite duzinu niza"<<endl;
int duzina;
cin>>duzina;
cout<<"ispunite niz"<<endl;
int *niz=new int[duzina];
for(int i=0; i<duzina; i++){
cin>>niz[i];}
cout<<"unesite broj"<<endl;
int broj;
cin>>broj;
system("Pause");
return 0;}
Koliko vidim, ti nigdje u ovo kodu ne pozivaš funkciju UmetniBroj. Daj nam cijeli kod sa funkcijom pa da vidimo što si točno radio.
evo mi main funkcije:
int main(){
cout<<"unesite duzinu niza"<<endl;
int duzina;
cin>>duzina;
cout<<"ispunite niz"<<endl;
int *niz=new int[duzina];
for(int i=0; i<duzina; i++){
cin>>niz[i];}
cout<<"unesite broj"<<endl;
int broj;
cin>>broj;
system("Pause");
return 0;}
Koliko vidim, ti nigdje u ovo kodu ne pozivaš funkciju UmetniBroj. Daj nam cijeli kod sa funkcijom pa da vidimo što si točno radio.
Ovako:
Imam problem da mi pise preko niz2[temp]=broj;
#include <iostream>
using namespace std;
int *umetni(int*niz,int duzina, int broj){
int d=duzina+1;
int *niz2=new int [d];
int temp=0;
for(int i=0; i<duzina-1; i++){
if(niz[i]<=broj){
temp=i;}}
niz2[temp]=broj;
for(int j=0; j<=temp; j++){
niz2[j]=niz[j];}
for(int j=temp; j<=duzina; j++){
niz2[j]=niz[j];}
for(int a=0; a<d; a++){
cout<<niz2[a]<<endl;}
cout<<temp<<endl;
return &temp;}
int main(){
cout<<"unesite duzinu niza"<<endl;
int duzina;
cin>>duzina;
cout<<"ispunite niz"<<endl;
int *niz=new int[duzina];
for(int i=0; i<duzina; i++){
cin>>niz[i];}
cout<<"unesite broj"<<endl;
int broj;
cin>>broj;
umetni(niz,duzina,broj);
system("Pause");
return 0;}
Imam problem sa sljedećim kodom, naime u zadatku traže da nakon unosa dva niza proizvoljne dužine i zatim da se u treći niz pohrane zajedničke ne duplirane vrjednosti oba niza, tj. presjek. Ja imam problem tako da ne mogu da kompariram sve sve elemente jednog niza sa svim elementima drugog niza.
#include<iostream>#include<cstdlib>#define max 100using namespace std;
int main()
{
int niz_prvi[max];
int niz_drugi[max];
int niz_zajednicki[max];
int velicina;
cout<<"Unesite duljinu prvog niza"<<endl;
cin>>velicina;
cout<<"Unesite clanove prvog niza!"<<endl;
for(int i=0; i<velicina; i++)
{
cin>>niz_prvi[i];
}
cout<<"Unesite duljinu drugog niza"<<endl;
cin>>velicina;
cout<<"Unesite clanove drugog niza!"<<endl;
for(int i=0; i<velicina; i++)
{
cin>>niz_drugi[i];
}
int pom=0;
for(int i=0; i<velicina; i++)
{
if(niz_prvi[i]==niz_drugi[i])
{
niz_zajednicki[i]=niz_prvi[i];
pom++;
}
}
for(int i=0; i<pom; i++)
{
cout<<niz_zajednicki[i]<<endl;
}
system("PAUSE");
return 0;
}
I da li bi mi bilo lakše da dinamički alociram memoriju, jer ne znam dokle vrtiti ovu petlju žutim markerom.
Imam problem da mi pise preko niz2[temp]=broj;
#include <iostream>
using namespace std;
int *umetni(int*niz,int duzina, int broj){
int d=duzina+1;
int *niz2=new int [d];
int temp=0;
for(int i=0; i<duzina-1; i++){
if(niz[i]<=broj){
temp=i;}}
niz2[temp]=broj;
for(int j=0; j<=temp; j++){
niz2[j]=niz[j];}
for(int j=temp; j<=duzina; j++){
niz2[j]=niz[j];}
for(int a=0; a<d; a++){
cout<<niz2[a]<<endl;}
cout<<temp<<endl;
return &temp;}
int main(){
cout<<"unesite duzinu niza"<<endl;
int duzina;
cin>>duzina;
cout<<"ispunite niz"<<endl;
int *niz=new int[duzina];
for(int i=0; i<duzina; i++){
cin>>niz[i];}
cout<<"unesite broj"<<endl;
int broj;
cin>>broj;
umetni(niz,duzina,broj);
system("Pause");
return 0;}
Buduci da trebas vratiti pokazivac na int, onda bi bilo logicnije da vratis pokazivac na polje sa umetnutim clanom, a ne adresu lokalne varijable. To sto si napravio sa vracanjem adrese na lokalnu varijablu temp je potpuno besmisleno. Uz to cijela funkcija je besmislena. Jednostavno ne mogu shvatiti sto si ti htio ovdje raditi. Ovo je funkcija koja umece novi clan, a ti u njoj ispisujes clanove polja.
Sada cemo krenuti sa pravilnijim pristupom. Buduci da dodajes jedan clan u polje, onda mi moramo u funkciji alocirati polje koji ima 1 clan vise od polja koje nam je doslo. To radimo ovako:
int *novoPolje = new int[duzina+1]Kada smo to napravili, onda moramo ubaciti clanove u to novo polje, ali tako da pazimo da umetnemo novi clan na pravo mjesto. Buduci da je polje sortirano, mi cemo prelaziti kroz staro polje i kopirati ih novo polje sve dok nam broj koji trebamo unijeti manji od clanova staroga polja. Kada vise nije manji onda smo nasli mjesto gdje trebamo taj novi broj ubaciti. To cemo raditi kroz for petlju i trebati ce nam dvije varijable. Jedna koja ce pamtiti do kojeg smo indeksa dosli u starome polju, i nova koja ce pamtiti do kojeg smo indeksa dosli u novome polje. Naime kad ubacimo broj u novo polje, mi smo se pomaknuli za jedno mjesto u novome polju, ali smo u starome polju ostali na istome mjestu i zato trebamo dvije varijable:
int sIndex = 0, nIndex =0;
for(nIndex =0; nIndex<duzina+1;nIndex++){
if(broj >= niz[sIndex] && sIndex == nIndex)
novoPolje[nIndex] = broj;
else{
novoPolje[nIndex] = niz[sIndex];
sIndex++;
}
Sada smo napravili novo polje sa ubacenim clanom. Sada trebamo dealocirati staro polje jer bi inace ono ostalo u memoriji:
delete [] niz
I vratimo pokazivac na novo polje:
return novoPolje;
I kad pozivas funkciju umetni broj onda trebas vrijednost funkcije pridziti polju:
niz = UmetniBroj(niz,duzina,broj);
I da li bi mi bilo lakše da dinamički alociram memoriju, jer ne znam dokle vrtiti ovu petlju žutim markerom.
Ako hoces provjeriti presjek polja, onda ti trebaju dvije for petlje jer u tvome slucaju provjeravas samo jesu li brojevi sa istim indexom jednaki.
Ako hoces provjeriti presjek polja, onda ti trebaju dvije for petlje jer u tvome slucaju provjeravas samo jesu li brojevi sa istim indexom jednaki.
NIje mi baš jasno?
Prije svega hvala na trudu. U svom kodu sam alocirao prostor za novi niz u funkciji, ne znam kako nisi mogao da to vidis,
int d=duzina+1;
int *niz2=new int [d];
temp mi je bila pomocna varijabla koja mi je sluzila da nadjem clan niza koji je manji od prosljedjenog broja. To sam radio pomocu for petlje:
for(int i=0; i<duzina-1; i++){
if(niz[i]<=broj){
temp=i;}}
Slijedeci korak mi je bio da ispunim novi niz (tj.niz2) sa clanovima prosljedjenog niza, do indexa onog broja koji je manji od prosljedjenog broja.
for(int j=0; j<=temp; j++){
niz2[j]=niz[j];}
Prije toga sam rekao da je:
niz2[temp]=broj;
Nakon toga sam u niz2 upisivao preostale clanove prosljedjenog niza koji su bili veci od prosljedjenog broja:
for(int j=temp; j<=duzina; j++){
niz2[j]=niz[j];}
A to sto return-am pokazivac na temp, to je greska
U zadatku mi je naglaseno da moram vratiti pokazivac na prvi clan novog niza, to bi u mom slucaju bilo,
return &niz2[0];
A zasto vracam referencu prvog clana novog niza?! Pogledaj deklaraciju funkcije!
Uradio sam prema tvojoj preporuci (tj.tvom kodu) al i dalje ne radi! Evo screen-a
NIje mi baš jasno?
Ti imas dva polja i moras naci njihov presjek tj. moras provjeriti koji se clanovi nalaze u oba polja. Dakle za svaki clan jednoga polja moras proci sve clanove drugoga polje i usporediti ih. Ti si samo provjeravao da li su clanovi koji imaju isti index jednaki i to je pogresno. Recimo da imas dva polja polje1[0,1,2,5] i [1,2,5,6]. Kada si ti provjeravao ti si u stvari radio samo ove provjere:
0 == 1
1 == 2
2 == 5
5 == 6
I po tebi bi novi skup bio prazan. Bio si dobro napravio varijablu pom no nisi je pravilno iskoristion. Naime ti si napisao ovo:
niz_zajednicki[i]=niz_prvi[i];
Ovo bi ti radilo no besmisleno je. Taj novi zajednicki niz nema nuzno duljinu oba skupa, i zato za njega moras zasebno pamtiti do kojeh si clana dosao, a zato ti, osim i za duljinu novog polja, sluzi i za pamcenje do kojega si clana dosao u novome polju. Oa je ta linija trebala izgledati ovako:
niz_zajednicki[pom] = niz_prvi[i];
Sada cemo sve ovo implementirati:
for(int i =0; i< velicina;i++){
for(int j = 0;j< velicina;j++)
if(niz_prvi[i] == niz_drugi[j]){
niz_zajednicki[pom] = niz_prvi[i];
pom++;
break;
}
}
Mi za svaki clan prvoga polja provjeravamo da li se nalazi u drugome polju. To radimo tako da prolazimo kroz sve clanove drugoga polja, i gledamo je li taj clan prvoga polja jednak ijednome clanu drugoga polja. Ako jest onda ga dodamo u zajednicki niz i prekinemo petljanje za taj clan polja i predemo na sljedeci clan polja.