Programiranje u C-u

poruka: 216
|
čitano: 64.823
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Programiranje u C-u

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...

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

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");
}

 
0 0 hvala 0
17 godina
offline
Programiranje u C-u

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). 

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
Poruka je uređivana zadnji put uto 6.9.2011 13:06 (itf4n).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

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);

}

 

Poruka je uređivana zadnji put sri 7.9.2011 19:36 (Broken).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

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.

 

Broken kaže...

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.

 

Broken kaže...
 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)?

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.

My computer once beat me at chess, but we got even after a round of boxing.
Poruka je uređivana zadnji put sri 7.9.2011 20:02 (rustweaver).
17 godina
offline
Programiranje u C-u

Ajde malo zaguglaj - 

http://www.cplusplus.com/reference/clibrary/cstdio/fgetc/

lijepo ti piše:

Get character from stream

 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

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 ?

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

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.

My computer once beat me at chess, but we got even after a round of boxing.
14 godina
neaktivan
offline
Programiranje u C-u

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;
}

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u

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

14 godina
neaktivan
offline
Re: Programiranje u C-u

>< tako nemože ni u jednom slučaju, ispričavam na ovoliko nepotrebnih postova

14 godina
neaktivan
offline
Programiranje u C-u

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?

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...
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...

My computer once beat me at chess, but we got even after a round of boxing.
17 godina
offline
Programiranje u C-u

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;
}

Poruka je uređivana zadnji put sub 10.9.2011 15:51 (Floki).
 
1 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u
rustweaver kaže...
Broken kaže...
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...

 

  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);

}

Poruka je uređivana zadnji put pet 9.9.2011 19:44 (Broken).
17 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...
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;
  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.

Some people say that if you play a Windows install CD backwards you will hear demon voices commanding you to worship Satan. But that's nothing. If you play it forward it will install Windows.
Poruka je uređivana zadnji put pet 9.9.2011 20:07 (1domagoj1).
14 godina
neaktivan
offline
Programiranje u C-u

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 ?

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u
1domagoj1 kaže...
Broken kaže...
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;
  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.

Poruka je uređivana zadnji put pet 9.9.2011 21:59 (Broken).
17 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

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 ;)

Some people say that if you play a Windows install CD backwards you will hear demon voices commanding you to worship Satan. But that's nothing. If you play it forward it will install Windows.
14 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

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?

14 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...
Broken kaže...

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;
}

Poruka je uređivana zadnji put sub 10.9.2011 12:29 (ivanho).
14 godina
neaktivan
offline
Programiranje u C-u

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.

 
1 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

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.

Some people say that if you play a Windows install CD backwards you will hear demon voices commanding you to worship Satan. But that's nothing. If you play it forward it will install Windows.
14 godina
neaktivan
offline
Re: Programiranje u C-u
1domagoj1 kaže...
Broken kaže...

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.

17 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

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 ;).

Some people say that if you play a Windows install CD backwards you will hear demon voices commanding you to worship Satan. But that's nothing. If you play it forward it will install Windows.
17 godina
offline
Re: Programiranje u C-u

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;
}

 

 

 

 

 

 

Poruka je uređivana zadnji put sub 10.9.2011 17:07 (Floki).
17 godina
neaktivan
offline
Programiranje u C-u

@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 ;)

Gentoo... it's like wiping your ass with silk. Or sandpaper.
 
0 0 hvala 0
17 godina
offline
Re: Programiranje u C-u
1domagoj1 kaže...

@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{#}

14 godina
neaktivan
offline
Re: Programiranje u C-u
1domagoj1 kaže...
Broken kaže...

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]);
                }
      }
}

14 godina
neaktivan
offline
Programiranje u C-u

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;
}

 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice