Vjerojatno si umjesto
*pMax = x[i];
htio
pMax = &x[i];
Prva verzija na mjesto na koje pokazuje pMax (a pokazuje na prvi član polja) postavlja x[i]. Drugim riječima, najveći element se kopira u prvi element polja. To nije ono što si namjeravao...
Vjerojatno si umjesto
*pMax = x[i];
htio
pMax = &x[i];
Prva verzija na mjesto na koje pokazuje pMax (a pokazuje na prvi član polja) postavlja x[i]. Drugim riječima, najveći element se kopira u prvi element polja. To nije ono što si namjeravao...
Imam ovaj dio koda i sada zanima me sta ovdje predstavlja & ako je to "I":
Kada izvrsim kod izbaci mi rezultat AAAACCCCBBBBCCCC sad zanima me zasto je ovdje ide 4 zadnja znaka CCCC zar neide AAAA, jer 1 & 1 daje C, 2 & 2 daje B i sve ostalo daje A, ja ovdje imam 3 & 1 i daje mi C
#include<stdio.h>
#include<stdlib.h>
void main()
{
int x;
int y;
for(x=0;x<4;x++)
for(y=0;y<4;y++){
if(x & 1)
putchar('C');
else if(x & 2)
putchar('B');
else
putchar('A');
}
system("pause");
}
Binarni operator & je "bitovni i". Rezultat a & b je vrijednost za čije bitove vrijedi: ako je na mjestu k u prvoj varijabli i na istom mjestu k u drugoj varijabli bit jednak jedinici, onda je bit na k-tom mjestu u rezultatu jednak jedinici, inače je bit na k-tom mjestu u rezultatu jednak nuli.
Npr.: 01010000 & 11001100 = 01000000. Samo je drugi (sedmi) bit u obje vrijednosti jednak jedinici, pa je samo i taj bit u rezultatu jednak jedinici.
Inače, u C-u još postoje 2 oblikom slična operatora:
unarni &, kojemu si značenje upoznao kod pokazivača (operator koji daje adresu svog argumenta)
binarni &&, koji je u značenju "logičkog i", te vraća vrijednost true (ili broj različit od 0) ako su oba argumenta true; inače false (ili 0).
Zanima me kod datoteka zasto se umjesto fprintf ne koristi printf i fscanf ne koristi scanf, kod ovog npr. while(!feof(fp)) jel ovdje ! znači različito ili ?
Kad korisitim fwrite i fread?
I jos kod ovog boldanog zanima me ja ima znači imam varijablu c tipa char šta ona radi kod ovog c=getc(fp)? Jesu li svi znakovi iz datoteke sadrzani u varijabli c ili šta konkretno ovo znači c=getc(fp)?
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fp;
int brojrjeci;
char c;
int prekid;
if( ( fp = fopen( "dat.txt", "r") ) == NULL ) {
printf("Greška kod otvaranja datoteke!\n");
exit(1);
}
brojrjeci = 0;
prekid = 1;
while(!feof(fp)) {
c=fgetc(fp);
if( c == ' ' || c == '.' || c == ',' || c == '\n' ||
c == '\t' || c == EOF ) {
if( !prekid ) {
brojrjeci++;
prekid = 1;
}
} else {
prekid = 0;
}
}
printf("broj rjeci je %d\n", brojrjeci);
fclose(fp);
return (0);
}
Zanima me kod datoteka zasto se umjesto fprintf ne koristi printf i fscanf ne koristi scanf, kod ovog npr. while(!feof(fp)) jel ovdje ! znači različito ili ?
funkcija feof provjerava da li se doslo do kraja datoteke i vraca broj veci od nule ako je doslo do kraja. Usklicnik ti je logicko "ne".
dakle while(!feof(fp)) kaze, ponavljaj dok nije dostignut kraj datoteke.
Ako te ovaj usklicnik zbunjuje, to ti je isto kao da si napisao ovo: while(feof(fp)!=1) ponavljaj dok feof ne vrati broj 1
a mozes i ovako: while(feof(fp)==0) ponavljaj dok feof vraca broj nula.
Kad korisitim fwrite i fread?
fread cita X bajtova iz datoteke u memoriju, dok fwrite zapisuje X bajtova iz memorije u datoteku. Uglavnom se koriste pri citanju iz binarnih datoteka, ali mozes i tekstualne citati s time, iako ce ti stvari biti malo kompliciranije.
funkcija getc cita po jedan znak (byte) iz datoteke. Tako mozes procitati cijelu datoteku jedan po jedan znak, ali je veoma sporo. Koristis getc samo kad ti treba tocno jedan znak.
Morat ces se nauciti citati referencu za C i C++ funkcije.
Ajde malo zaguglaj -
http://www.cplusplus.com/reference/clibrary/cstdio/fgetc/
lijepo ti piše:
Get character from stream
Ok hvala za ove linkove, rustweaver ako naprimjer imam u datotetci napisano ovo "Bug forum razvoj programiranje." funkcija getc() će mi čitati po svaki znak iz ove rečenice dok ne dode do kraja rečenice. A da umjesto fgetc() koristim fgets() šta bi mi onda radilo, jel bi mi dobavljalo cijelu liniju teksta ili ?
Ok hvala za ove linkove, rustweaver ako naprimjer imam u datotetci napisano ovo "Bug forum razvoj programiranje." funkcija getc() će mi čitati po svaki znak iz ove rečenice dok ne dode do kraja rečenice. A da umjesto fgetc() koristim fgets() šta bi mi onda radilo, jel bi mi dobavljalo cijelu liniju teksta ili ?
Ako imas datoteku s tim tekstom. Kada prvi puta pozoves getc dobit ces 'B', kada drugi puta pozoves getc dobit ces 'u', i tako dalje...
fgets radi slijedece: citat ce odredeni broj znakova koji mu naredis, ali prestaje sa citanjem kada dode do kraja linije ili datoteke.
recimo da imas datoteku sa sadrzajem:
pozdrav
bug forumu!
ako pozoves recimo fgets ovako: fgets(text, 20, fp);
dobit ces samo prvu liniju teksta, neovisno o tome sto si rekao da cita vise znakova, procita se rijec "pozdrav" koja ima 7 znakova, funkcija dode do kraja linije i prestaje sa daljnjim citanjem. Da bi dobio drugu liniju morao bi jos jednom pozvati fgets. Zato je fgets dobar za citanje teksta liniju po liniju.
Jel može pomoć oko koda?
Radi se o sljedećem, u program se unose pozicije kralja i lovca na šahovskoj ploči, treba ispisati ako lovac napada kralja.
Ovo što sam pokušao sa for i if mi nekako djeluje ok al neće odraditi kako je zamišljeno, očito mi je da sam negdje napravio neku pogrešku, bila ona mala il ne, pa ako neko zna bio bih zahvalan :D
#include<stdio.h>
int main()
{
int l,s,l1,s1,L,K,i,j;
printf("\nunesi poziciju kralja stupac(s) i liniju(l):"); scanf("%d %d",&s, &l);
printf("\nK=[%d][%d]",s,l);
printf("\n\nunesi poziciju lovca stupac(s1) i liniju(l1):"); scanf("%d %d",&s1, &l1);
printf("\nL=[%d][%d]",s1,l1);
for(i=s1;i<=8;i++)
for(j=l1;j<=8;j++)
if((i==s)&&(j==l)) printf("lovac napada kralja");
else
for(i=s1;i<=8;i++)
for(j=l1;j<=8;j--)
if((i==s)&&(j==l)) printf("lovac napada kralja");
else
for(i=s1;i<=8;i--)
for(j=l1;j<=8;j++)
if((i==s)&&(j==l)) printf("lovac napada kralja");
else
for(i=s1;i<=8;i--)
for(j=l1;j<=8;j--)
if((i==s)&&(j==l)) printf("lovac napada kralja");
else
printf("lovac ne napada kralja");
printf("\n\nza izlaz pritisni bilo koji gumb i pritisni ENTER");
scanf(" ");
return 0;
}
vidim i sam šta tu nevalja....nemogu se u for ograničiti sa ovim 8 to mi vrijedi samo u slučaju sa 2 ++, u slučaju sa 2 -- bi vrijedilo da se ograničim sa 1, a za ove slučajeve gdje su kombinacije ++ i -- neznam kak bi
>< tako nemože ni u jednom slučaju, ispričavam na ovoliko nepotrebnih postova
Imam ovaj zadatak:
Napisati program u kojem korisnik unosi po tri broja sve dok je suma ta tri broja manja od 100. U suprotnom, program prestaje s radom i ispisuje koliko je do tada brojeva uneseno.
Jel ja ovdje unosim samo tri broja i onda gledam kolika je ta suma i ispisujem uneseni broj ili unosim tri broja pa ako je suma manja od 100 opet unesi i ako prekorači 100 onda ispisati koliko je uneseno?
Ovo oznaceno. Deklariras varijablu koja broji brojeve koji su do sada upisani, i njenu pocetnu vrijednost postavis na nula. Trazis korisnika da upise tri broja, zbrojis te brojeve, i ako je zbroj manji od sto uvecas onu varijablu za 3 (zato jer upisujes po tri broja). Kada zbroj bude sto ili veci petlja se prekida i ispisujes vrijednost varijable koja ti je brojala brojeve...
Predpostavljam da misliš u zadatku izvršiti provjeru nakon unošenja pozicija kralja i konja, da li konj zadaje Šah.
U ovom programu se pozicije unose u šahovskoj notaciji npr. (A razmak 8) - nisam prilagodio da se mogu unositi i mala slova - ali i nije naglasak na tome.
#include<iostream>
using namespace std;
bool ProvjeraDostupnosti(int prvaKoordinata, int drugaKoordinata)
{
if((prvaKoordinata < 8 && prvaKoordinata >= 0) && (drugaKoordinata < 8 && drugaKoordinata >= 0))
{
return true;
}
return false; // ako pokret konja izlazi iz šahovskog polja - vraća false
}
void KretanjeKonja(int pozicijaL1, int pozicijaL2, int (*polje)[8])
{
int prvaPozicija = 8 - pozicijaL2; // šahovsku notaciju pretvaramo u matričnu
int drugaPozicija = pozicijaL1 - 65; // također
int prvaKoordinata, drugaKoordinata;
prvaKoordinata = prvaPozicija + 2; // mjenjamo poziciju konja po matrici
drugaKoordinata = drugaPozicija + 1; // također za drugu koordinatu
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++; // ako je pozicija u polju inkrementiramo vrijednost
}
drugaKoordinata = drugaPozicija - 1; // nastavljamo dok ne ispitamo sve kombinacije kretanja konja
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
prvaKoordinata = prvaPozicija + 1;
drugaKoordinata = drugaPozicija + 2;
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
drugaKoordinata = drugaPozicija - 2;
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
prvaKoordinata = prvaPozicija - 2;
drugaKoordinata = drugaPozicija + 1;
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
drugaKoordinata = drugaPozicija - 1;
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
prvaKoordinata = prvaPozicija - 1;
drugaKoordinata = drugaPozicija + 2;
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
drugaKoordinata = drugaPozicija - 2;
if(ProvjeraDostupnosti(prvaKoordinata, drugaKoordinata))
{
polje[prvaKoordinata][drugaKoordinata]++;
}
}
int main()
{
char pozicijaK1, pozicijaL1;
int pozicijaK2, pozicijaL2;
int polje[8][8] = {0}; // deklariramo matricu 8X8 i inicijaliziramo elemente na 0
cout<< "Unesi poziciju kralja: ";
cin>> pozicijaK1 >> pozicijaK2; // poziciju unosimo u šahovskoj notaciji npr- A 5 (veliko A - razmak 5)
polje[(8 - pozicijaK2)][pozicijaK1 - 65] = 1; // šahovsku notaciju konvertiramo u matricu
cout<< "Unesi poziciju konja: ";
cin>> pozicijaL1 >> pozicijaL2; // npr. B 7 (veliko B razmak 7)
polje[(8 - pozicijaL2)][pozicijaL1 - 65] = 1;
KretanjeKonja(pozicijaL1, pozicijaL2, polje); // pozivamo funkciju za određivanje mogućih pokreta konja
if(polje[(8 - pozicijaK2)][pozicijaK1 - 65] == 2) // ako je vrijednost polja na poziciji kralja 2 - u dometu je konju
{
cout << "Sah!";
}
else
{
cout << "Konj ne prijeti kralju!";
}
cout << endl;
for(int i = 0; i < 8; i++)
{
for(int j=0; j<8; j++)
{
cout<< polje[i][j] << " "; // ispis pozicja kralja, konja i mogućih kretanja konja
}
cout<< endl;
}
return 0;
}
Ovo oznaceno. Deklariras varijablu koja broji brojeve koji su do sada upisani, i njenu pocetnu vrijednost postavis na nula. Trazis korisnika da upise tri broja, zbrojis te brojeve, i ako je zbroj manji od sto uvecas onu varijablu za 3 (zato jer upisujes po tri broja). Kada zbroj bude sto ili veci petlja se prekida i ispisujes vrijednost varijable koja ti je brojala brojeve...
Jel unesene brojeve spremam u niz ili ?
EDIT: Evo kako sam ja to napravio preko goto naredbe, radi mi ali ako mi mozes samo pojasniti kako si ti htio, volio bih da ima jos koji nacin da ovo rjesim osim goto naredne?
#include<stdio.h>
int main()
{
int a[3];
int br=0,suma=0;
int i;
ponovi:
printf("Unesite 3 broja:\n");
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
suma=suma+a[i];
br++;
if(suma>100)
goto zavrsi;
}
if(suma<100)
goto ponovi;
zavrsi:
printf("Broj unesenih je: %d",br);
}
#include<stdio.h>
int main()
{
int a[3];
int br=0,suma=0;
int i;
while (suma < 100) // while petlja se vrti dok god je
//uvjet istinit
{ // kad bude suma veća od 100,
//petlja se prekida i
//ispisuje se broj
printf("Unesite 3 broja:\n");
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
suma=suma+a[i];
br++;
}
}
printf("Broj unesenih je: %d",br);
return 0;
}
Isto to možeš i preko while petlje (što je i bolje, goto naredba nije poželjna).
EDIT: Sad vidim, što ako je suma 100? Iz zadatka ne mogu isčitati, kaže ako je manje ponavljaj, ako prekorači ispiši, iz toga dvoje ne znam kamo utrpat broj 100 xD, uglavnom ovak kak je program, za sumu 100 će ići na ispis.
Imam ovaj zadatak: Napisati program koji učitava tri cijela broja a,b,c, u funkciji int max_dva(int a, int b, int c) osigurati povratnu vrijednost koja predstavlja zbroj dviju najvećih znamenki. Npr. ako imam brojeve 28,13,17 program bi mi trebao zbrojiti 8 i 7 ili ?
#include<stdio.h>
int main()
{
int a[3];
int br=0,suma=0;
int i;
while (suma < 100) // while petlja se vrti dok god je
//uvjet istinit
{ // kad bude suma veća od 100,
//petlja se prekida i
//ispisuje se broj
printf("Unesite 3 broja:\n");
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
suma=suma+a[i];
br++;
if(suma>100)
break;}
printf("Broj unesenih je: %d",br);
return 0;
}
Isto to možeš i preko while petlje (što je i bolje, goto naredba nije poželjna).
EDIT: Sad vidim, što ako je suma 100? Iz zadatka ne mogu isčitati, kaže ako je manje ponavljaj, ako prekorači ispiši, iz toga dvoje ne znam kamo utrpat broj 100 xD, uglavnom ovak kak je program, za sumu 100 će ići na ispis.
Greska ti je u ovom programu ako ja unesem 1111 program se ne prekida jer moram unijeti 3 puta dok se for petlja ne ispuni.
EDIT: Dodao sam ti if i break u kod.
Greska ti je u ovom programu ako ja unesem 1111 program se ne prekida jer moram unijeti 3 puta dok se for petlja ne ispuni.
EDIT: Dodao sam ti if i break u kod.
Imaš pravo, nisam obraćao pažnju na to, bitno mi je bilo samo da ti pokažem način na koji se to pravilno može napisati, znači while petljom. Ovo si dobro primjetio i dobro rješenje si ubacio ;)
Imam ovaj zadatak: Napisati program koji učitava tri cijela broja a,b,c, u funkciji int max_dva(int a, int b, int c) osigurati povratnu vrijednost koja predstavlja zbroj dviju najvećih znamenki. Npr. ako imam brojeve 28,13,17 program bi mi trebao zbrojiti 8 i 7 ili ?
Kako da rijesim ovaj?
Imam ovaj zadatak: Napisati program koji učitava tri cijela broja a,b,c, u funkciji int max_dva(int a, int b, int c) osigurati povratnu vrijednost koja predstavlja zbroj dviju najvećih znamenki. Npr. ako imam brojeve 28,13,17 program bi mi trebao zbrojiti 8 i 7 ili ?
Kako da rijesim ovaj?
Rastavis brojeve na pojedine znamenke i nađeš dvije najvece i zbrojis ih!!
EDIT: ovo ti primjer funkcije (mislim da se može i bolje napravit ova funkcija)
int max_dva(int a,int b,int c)
{
int max1=-1,max2=-1;
while(a)
{
if(a%10>=max1)
{
max2=max1;
max1=a%10;
}
else if(a%10>max2)
{
max2=a%10;
}
a/=10;
}
while(b)
{
if(b%10>=max1)
{
max2=max1;
max1=b%10;
}
else if(b%10>max2)
{
max2=b%10;
}
b/=10;
}
while(c)
{
if(c%10>=max1)
{
max2=max1;
max1=c%10;
}
else if(c%10>max2)
{
max2=c%10;
}
c/=10;
}
return max1+max2;
}
Hvala Ivanho probat cu rjesiti na drugi nacin, za ovaj zadatak:
Napisati program u kojem treba inicijalizirati niz od 12 cjelobrojnih elemenata, te od tog niza formirati i ispisati novi niz sastavljen os svih brojeva koji se nalaze između prva dva člana polaznog niza.
Npr. Neka ja imam u nizu brojeve 1,5,7,3,4,6,9,20,...
Bi li trebao novi niz ispisivati brojeve od 1 do 5 (1,2,3,4,5) ili samo one brojeve koji se nalaze u nizu u tom intevralu (prvog i drugog člana niza) sto je ovdje 3 i 4?
Ne trebate mi rjesavati zadatak samo ako moze objasnjenje ovoga, hvala.
Hvala Ivanho probat cu rjesiti na drugi nacin, za ovaj zadatak:
Napisati program u kojem treba inicijalizirati niz od 12 cjelobrojnih elemenata, te od tog niza formirati i ispisati novi niz sastavljen os svih brojeva koji se nalaze između prva dva člana polaznog niza.
Npr. Neka ja imam u nizu brojeve 1,5,7,3,4,6,9,20,...
Bi li trebao novi niz ispisivati brojeve od 1 do 5 (1,2,3,4,5) ili samo one brojeve koji se nalaze u nizu u tom intevralu (prvog i drugog člana niza) sto je ovdje 3 i 4?
Ne trebate mi rjesavati zadatak samo ako moze objasnjenje ovoga, hvala.
Znači kaže treba formirati novi niz sastavljen od brojeva koji se nalaze između prva dva člana polaznog niza. U ovom nizu kojeg si ti tu naveo kao primjer, prva dva člana su 1 i 5. Dakle novi niz formiran od brojeva koji se nalaze između 1 i 5 se sastoji od svih brojeva koji se nalaze između 1 i 5 :). To su 2, 3, i 4. Dakle ako imaš neki od tih brojeva u svom nizu, novi niz će se sastojati od njih. Znači bez 1 i 5.
Hvala Ivanho probat cu rjesiti na drugi nacin, za ovaj zadatak:
Napisati program u kojem treba inicijalizirati niz od 12 cjelobrojnih elemenata, te od tog niza formirati i ispisati novi niz sastavljen os svih brojeva koji se nalaze između prva dva člana polaznog niza.
Npr. Neka ja imam u nizu brojeve 1,5,7,3,4,6,9,20,...
Bi li trebao novi niz ispisivati brojeve od 1 do 5 (1,2,3,4,5) ili samo one brojeve koji se nalaze u nizu u tom intevralu (prvog i drugog člana niza) sto je ovdje 3 i 4?
Ne trebate mi rjesavati zadatak samo ako moze objasnjenje ovoga, hvala.
Znači kaže treba formirati novi niz sastavljen od brojeva koji se nalaze između prva dva člana polaznog niza. U ovom nizu kojeg si ti tu naveo kao primjer, prva dva člana su 1 i 5. Dakle novi niz formiran od brojeva koji se nalaze između 1 i 5 se sastoji od svih brojeva koji se nalaze između 1 i 5 :). To su 2, 3, i 4. Dakle ako imaš neki od tih brojeva u svom nizu, novi niz će se sastojati od njih. Znači bez 1 i 5.
Znači samo ako se u niz unesu ti brojevi koji se nalaze u tom intervalu oni ce se formirati novi niz.
Ne trba raditi npr. ako je prvi član 1 a drugi 7 ne treba brojati od 1 do 7 nego samo ako se u nizu nalaze brojevi u datom intervalu oni ce se ispisati.
Znači samo ako se u niz unesu ti brojevi koji se nalaze u tom intervalu oni ce se formirati novi niz.
Ne trba raditi npr. ako je prvi član 1 a drugi 7 ne treba brojati od 1 do 7 nego samo ako se u nizu nalaze brojevi u datom intervalu oni ce se ispisati.
Pa da, tak sam ja skužio. Ako nema niti jednog broja između ta dva, niz će biti prazan. Tak bi ja rješio zadatak. No, možeš ti za vježbu napraviti i jednu i drugu verziju, sigurno će ti više pomoći nego odmoći ;).
E, baš sam se "proslavio" - čovjek je tražio algoritam za kretanje lovca po šahovskoj tabli - a ja išao pisati alogritam za kretanje konja.
I ovaj program traži unos pozicija figura u šahovskoj notaciji - npr. A 5 (veliko A razmak 5). Nisam prilagodio program za unos malih slova,
ali na tome ni nije naglasak.
Program nakon unosa pozicija kralja i lovca provjerava da li je Šah ili lovac sa date pozicije ne ugrožava kralja.
#include<iostream>
using namespace std;
bool KretanjeLovca(char pozicijaK1, int pozicijaK2, char pozicijaL1, int pozicijaL2)
{
int prvaKoordinataK = 8 - pozicijaK2; // pretvaramo koordinate šahovske notacije
int drugaKoordinataK = pozicijaK1 - 65; // u koordinate matrične notacije
int prvaKoordinataL = 8 - pozicijaL2; // npr. šahovska notacije A8 odgovara
int drugaKoordinataL = pozicijaL1 - 65; // matričnoj notaciji 00
if((prvaKoordinataK + drugaKoordinataK) == (prvaKoordinataL + drugaKoordinataL))
{
return true; // ako je zbroj koordinata matrične notacije obiju figura isti
} // tada su pozicije figura u dijagonali - odnosno to je putanja lovca
else if((prvaKoordinataK - drugaKoordinataK) == (prvaKoordinataL - drugaKoordinataL))
{
return true; // ako je razlika koordinata matrične notacije obiju figura ista
} // tada su pozicije figura u dijagonali - odnosno to je putanja lovca
else
{
return false; // pozicije figura nisu u dijagonali - odnosno nije putanja lovca
}
}
int main()
{
char pozicijaK1, pozicijaL1;
int pozicijaK2, pozicijaL2;
cout<< "Unesi poziciju kralja: ";
cin>> pozicijaK1 >> pozicijaK2; // poziciju unosimo u šahovskoj notaciji npr- A 5 (veliko A - razmak 5)
cout<< "Unesi poziciju lovca: ";
cin>> pozicijaL1 >> pozicijaL2; // npr. B 7 (veliko B razmak 7)
if(KretanjeLovca(pozicijaK1, pozicijaK2, pozicijaL1, pozicijaL2)) // funkcijom provjerimo da li lovac prijeti kralju
{
cout << "Sah!";
}
else
{
cout << "Lovac ne prijeti kralju!";
}
return 0;
}
@Floki
Hehe, a meni malo čudno zašto imaš toliki kod, a lovac se kreće samo po dijagonali :P, ali nisam dublje gledao pa samo prešao preko toga ;)
@Floki
Hehe, a meni malo čudno zašto imaš toliki kod, a lovac se kreće samo po dijagonali :P, ali nisam dublje gledao pa samo prešao preko toga ;)
A smješno - još gledam u matricu - potpuno u filmu za kretanje konja - simuliram kretanje konja - a pišem "lovac"
kad sam to jutros ispričao prijateljima u gradu - što su se nasmijali
Znači samo ako se u niz unesu ti brojevi koji se nalaze u tom intervalu oni ce se formirati novi niz.
Ne trba raditi npr. ako je prvi član 1 a drugi 7 ne treba brojati od 1 do 7 nego samo ako se u nizu nalaze brojevi u datom intervalu oni ce se ispisati.
Pa da, tak sam ja skužio. Ako nema niti jednog broja između ta dva, niz će biti prazan. Tak bi ja rješio zadatak. No, možeš ti za vježbu napraviti i jednu i drugu verziju, sigurno će ti više pomoći nego odmoći ;).
Evo napravio sam jednu verziju, nadam se da je ispravno napravljena:
Pošto imam samo jednu knjigu iz programiranja i u njoj nema bas puno zadataka, pa ako bi ste mi mogli napisati par slicnih zadataka iz knjiga kojih imate ili ako ima nekakva stranica ili pdf, zadaci tipa sume, ispisi broj samoglasnika iz stringa,slicno ovom zadtku dolje,...
U četvrtak mi je rok iz programiranja pa bih htio što bolje izvjezbat da to prodem, rjesio sam ispitne primjere ...
#include<stdio.h>
int main()
{
int x[12],y[12];
int i;
printf("Unesite elemente u niz x[12]:\n");
for(i=0;i<12;i++)
{
printf("x[%d]: ",i+1);
scanf("%d",&x[i]);
}
for(i=0;i<12;i++)
{
if(x[i]>x[0] && x[i]<x[1])
{
y[i]=x[i];
printf("y[%d]: %d\n",i+1,y[i]);
}
}
}
Unosi se znakovni niz, niz se prekida kada se unese 100 znakova program treba ispisati ukupan broj slova A-Z
u unesenom nizu. Stavio sam while da mi prekine kada bude 100 znakova ali ne prekida tek prekine kada prtisnem enter.
#include<stdio.h>
int main()
{
char c[100];
int n=0;
int i;
printf("Unesite znakovni niz sa 100 znakova:\n");
i=0;
while(i!=100)
{
scanf("%c",&c[i]);
if(c[i]>='A' && c[i]<='Z')
n++;
i++;
}
printf("Ukupan broj slova od A-Z je: %d\n",n);
return 0;
}