Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Prog2 DZ
WWW:
Idite na Prethodno  1, 2, 3, 4, 5, 6 ... 11, 12, 13  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Namdev
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 11. 2011. (19:23:40)
Postovi: (29)16
Spol: zombi
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 20:40 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

Na papiru su "razvuci" jednu takvu matricu u jedan niz i označi si koji se brojevi nalaze na dijagonali. Oni su poredani po pravilu koje ovisi o n, ali razmak između njih se mijenja.

Igraj se i nađi uređaj koji ih pronalazi :)

Ili napravi algoritam koji će ti učitati matricu spiralno.
Na papiru su "razvuci" jednu takvu matricu u jedan niz i označi si koji se brojevi nalaze na dijagonali. Oni su poredani po pravilu koje ovisi o n, ali razmak između njih se mijenja.

Igraj se i nađi uređaj koji ih pronalazi Smile

Ili napravi algoritam koji će ti učitati matricu spiralno.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
PermutiranoPrase
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 10. 09. 2011. (16:08:19)
Postovi: (F4)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
10 = 17 - 7

PostPostano: 20:47 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

Uočih neku zakonitost ali mi je djelovala prekomplicirano za iskoristiti.
Edit: Da, taj razmak se mijenjao! Morat ću još par matrica raspisati. Ma sredit ću ja to preko indeksa. :twisted:
Uočih neku zakonitost ali mi je djelovala prekomplicirano za iskoristiti.
Edit: Da, taj razmak se mijenjao! Morat ću još par matrica raspisati. Ma sredit ću ja to preko indeksa. Twisted Evil



_________________
With great power comes great electricity bill.
n!!!!
Theorem 2: Alexander the Great did not exist and he had an infinite number of limbs.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 20:53 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

Pocnes ovako:
[code:1]i = 0; j = 0; di = 1; dj = 0;[/code:1]
Dalje imas promjenu indeksa u svakom koraku:
[code:1]i += di; j += dj;[/code:1]
Ostaje ti jos, kad si na rubovima ([tt]i == 0[/tt], [tt]i == n-1[/tt],...) ispravno promijeniti varijable [tt]di[/tt] i [tt]dj[/tt].
Pocnes ovako:
Kod:
i = 0; j = 0; di = 1; dj = 0;

Dalje imas promjenu indeksa u svakom koraku:
Kod:
i += di; j += dj;

Ostaje ti jos, kad si na rubovima (i == 0, i == n-1,...) ispravno promijeniti varijable di i dj.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Zenon
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 09. 2011. (19:14:43)
Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]

PostPostano: 21:01 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

[quote="PermutiranoPrase"]Uočih neku zakonitost ali mi je djelovala prekomplicirano za iskoristiti.
[/quote]
Pa i nije baš :P U spoileru ti je moj kod. Malo je "blesav" jer od 4n-4 učitavanja, 4n-6 ih je beskorisno :P

[spoiler][code:1]#include<stdio.h>

int f( int n ){
int i,z,suma=0;
if (n<1) return 0;
if (n==1)
{
scanf("%d",&z);
return z;
}
for (i=0; i<4*n-4; i++)
{
scanf("%d",&z);
if ( i==0 || i==(4*n-4)/2 ) suma+=z;
}
return suma+f( n-2 );
}

int main(void){
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}[/code:1][/spoiler]
PermutiranoPrase (napisa):
Uočih neku zakonitost ali mi je djelovala prekomplicirano za iskoristiti.

Pa i nije baš Razz U spoileru ti je moj kod. Malo je "blesav" jer od 4n-4 učitavanja, 4n-6 ih je beskorisno Razz

Spoiler [hidden; click to show]:



_________________
It's a wonderful, wonderful life!
[tex]\heartsuit \ \mathcal{PMF-MO} \ \heartsuit[/tex]
[tex]\mathbb Z\Sigma\mathbb N\emptyset\mathbb N[/tex]
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Lux86
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2011. (23:38:43)
Postovi: (1D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 21:33 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

prilično sam nespretna sa stringovima, pa bi molila pomoć.
program bi trebao brisati svaku treću riječ, što i radi, osim kad je riječ koju treba obrisati na kraju, a ja nikako da dokučim zašto :)

[code:1]
int main(void)
{
char s[19723];
int i, j, rijec=0, novi=0;

scanf("%[^\n]", s);

for(i=0; s[i]!='\0'; i++)
{
if((i==0 && isalpha(s[i])) || (isspace(s[i]) && isalpha(s[i+1])))
{
rijec++;
if(rijec%3==0)
{
++i;
while(isalpha(s[i])) i++;
}
}

s[novi++] = s[i];
}
s[novi] = '\0';

printf("%s", s);
return 0;
}
[/code:1]
prilično sam nespretna sa stringovima, pa bi molila pomoć.
program bi trebao brisati svaku treću riječ, što i radi, osim kad je riječ koju treba obrisati na kraju, a ja nikako da dokučim zašto Smile

Kod:

    int main(void)
    {
        char s[19723];
        int i, j, rijec=0, novi=0;

        scanf("%[^\n]", s);

        for(i=0; s[i]!='\0'; i++)
        {
            if((i==0 && isalpha(s[i])) || (isspace(s[i]) && isalpha(s[i+1])))
            {
                rijec++;
                if(rijec%3==0)
                {
                    ++i;
                    while(isalpha(s[i])) i++;
                }
            }

            s[novi++] = s[i];
        }
        s[novi] = '\0';

        printf("%s", s);
        return 0;
    }


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 21:59 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

@Zenon: Lijepo je da ti znas matematiku, ali svrha zadace je da ljudi nauce programirati, a ne vrdati. Sto ce netko nauciti o dvodimenzionalnim poljima u C-u iz upute "nadji zakonitost medju indeksima"? :roll:

@Lux86: Brise ti samo trecu rijec, ali ne i sestu, devetu,... Primijeti da imas [tt]if[/tt] s dvije grane koje znace razlicito:
[tt]i==0 && isalpha(s[i])[/tt] [tex]\equiv[/tex] "sad si na nultom znaku i [b]taj[/b] je [b]slovo[/b],
[tt]isspace(s[i]) && isalpha(s[i+1])[/tt] [tex]\equiv[/tex] "sad si na nekom znaku i [b]onaj iza njega[/b] je slovo (a on sam je [b]razmak[/b]).

IMO, ovako je smislenije: "ako je [tt]i[/tt]-ti znak slovo i (on je prvi ili je ispred njega razmak)", tj. [tt]if(isalpha(s[i]) && (i == 0 || isspace(s[i-1])))[/tt].

S rijecima smo radili na predavanju. Tamo je to lijepo objasnjeno.
@Zenon: Lijepo je da ti znas matematiku, ali svrha zadace je da ljudi nauce programirati, a ne vrdati. Sto ce netko nauciti o dvodimenzionalnim poljima u C-u iz upute "nadji zakonitost medju indeksima"? Rolling Eyes

@Lux86: Brise ti samo trecu rijec, ali ne i sestu, devetu,... Primijeti da imas if s dvije grane koje znace razlicito:
i==0 && isalpha(s[i]) [tex]\equiv[/tex] "sad si na nultom znaku i taj je slovo,
isspace(s[i]) && isalpha(s[i+1]) [tex]\equiv[/tex] "sad si na nekom znaku i onaj iza njega je slovo (a on sam je razmak).

IMO, ovako je smislenije: "ako je i-ti znak slovo i (on je prvi ili je ispred njega razmak)", tj. if(isalpha(s[i]) && (i == 0 || isspace(s[i-1]))).

S rijecima smo radili na predavanju. Tamo je to lijepo objasnjeno.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Lux86
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2011. (23:38:43)
Postovi: (1D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 22:05 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

sve jasno! hvala :D
sve jasno! hvala Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 22:41 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

nije u vezi dz, al nezz di da pitam...imam problem kod ucitavanja znakova...tipa, zadatak 5.11. ucitam string i onda da ucitam c1 i c2 napisem: printf("c1="); scanf("%c", &c1); printf("c2="); scanf("%c", &c2); i sad kad krenem izvodit program, uspisem string i onda mi pise:
c1= c2= (i onda tu ucitam c2 i radi samo taj c2, sto je za ocekivat jer c1 nisam ni ucitala)....kako da to rijesim?? tako mi je u svakom di trebam ucitat 2 znaka....a negdje, tipa u zadatku 5.8., di treba n-terostrucit zadano slovo, isto nece da mi ucita znak....???
hvalaaa :)
nije u vezi dz, al nezz di da pitam...imam problem kod ucitavanja znakova...tipa, zadatak 5.11. ucitam string i onda da ucitam c1 i c2 napisem: printf("c1="); scanf("%c", &c1); printf("c2="); scanf("%c", &c2); i sad kad krenem izvodit program, uspisem string i onda mi pise:
c1= c2= (i onda tu ucitam c2 i radi samo taj c2, sto je za ocekivat jer c1 nisam ni ucitala)....kako da to rijesim?? tako mi je u svakom di trebam ucitat 2 znaka....a negdje, tipa u zadatku 5.8., di treba n-terostrucit zadano slovo, isto nece da mi ucita znak....???
hvalaaa Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 23:03 uto, 10. 4. 2012    Naslov: Citirajte i odgovorite

Prvi [tt]scanf("%c",...)[/tt] ti pokupi newline (enter od ucitavanja stringa). Ispravan format je [tt]" %c"[/tt] (razmak ispred [tt]%[/tt], sto znaci "pocisti "bjeline" ispred znaka (razmake, tabove, newlineove)").
Prvi scanf("%c",...) ti pokupi newline (enter od ucitavanja stringa). Ispravan format je " %c" (razmak ispred %, sto znaci "pocisti "bjeline" ispred znaka (razmake, tabove, newlineove)").



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
PermutiranoPrase
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 10. 09. 2011. (16:08:19)
Postovi: (F4)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
10 = 17 - 7

PostPostano: 9:39 sri, 11. 4. 2012    Naslov: Citirajte i odgovorite

Opet imam pitanja.
Ovo je moj kod za izokretanje riječi koji dobro radi, koliko primjetih:
[code:1]
void izokreni (char *s)
{
int citam = 0;
int l, d, temp;

while (s[citam]) // prolazi kroz string
{
while ( isspace(s[citam])) // ako smo na razmaku, samo ajde dalje
++citam;

l = citam; // lijeva granica rijeci
while ( isalpha( s[citam] )) // ajde do kraja rijeci
++citam;

d = citam-1; // desna granica rijeci, tj. kraj
++citam; // odi jos jedno mjesto naprijed, na razmak

while ( l < d ) // zamijeni lijevi s desnim dok ne dodjemo do sredine rijeci
{
temp = s[l];
s[l] = s[d];
s[d] = temp;
++l;
--d;
}
}

}[/code:1]

Kad sam raspisivala na papiru, po mojoj logici bi trebalo ići:
l = citam+1 => jer smo s indeksom 'citam' došli do zadnjeg razmaka prije početka riječi, a onda je petlja stala, pa je 'citam+1' prvo slovo u rijeci
d = citam => jer smo s indeksom 'citam' stigli do zadnjeg slova u riječi (zadnjeg slova prije razmaka), citam - 1 bi trebalo biti predzadnje slovo

Ali tako bi dobila rascjepkane riječi koje su bile donekle izokrenute. Što mi je krivo u načinu razmišljanja? Ili je u C-u stvar? :shock:

Edit: Program mi radi savršeno na unaprijed zadanom stringu, ali kada upišem svoj string mi bude romantičan i ispiše par srca i hrpu čudnih slova s kvačicama i drugih znakova. :( Zašto, o zašto? Koristim i scanf("%[^\n]", s), scanf"%s", s) i gets(s) i uvijek bude isto.
Opet imam pitanja.
Ovo je moj kod za izokretanje riječi koji dobro radi, koliko primjetih:
Kod:

void izokreni (char *s)
{
   int citam = 0;
   int l, d, temp;

   while (s[citam])                        // prolazi kroz string
   {
      while ( isspace(s[citam]))               // ako smo na razmaku, samo ajde dalje
         ++citam;

      l = citam;                                 // lijeva granica rijeci
      while ( isalpha( s[citam] ))               // ajde do kraja rijeci
         ++citam;

      d = citam-1;                           // desna granica rijeci, tj. kraj
      ++citam;                                 // odi jos jedno mjesto naprijed, na razmak

      while ( l < d )                           // zamijeni lijevi s desnim dok ne dodjemo do sredine rijeci
      {
         temp = s[l];
         s[l] = s[d];
         s[d] = temp;
         ++l;
         --d;
      }
   }

}


Kad sam raspisivala na papiru, po mojoj logici bi trebalo ići:
l = citam+1 ⇒ jer smo s indeksom 'citam' došli do zadnjeg razmaka prije početka riječi, a onda je petlja stala, pa je 'citam+1' prvo slovo u rijeci
d = citam ⇒ jer smo s indeksom 'citam' stigli do zadnjeg slova u riječi (zadnjeg slova prije razmaka), citam - 1 bi trebalo biti predzadnje slovo

Ali tako bi dobila rascjepkane riječi koje su bile donekle izokrenute. Što mi je krivo u načinu razmišljanja? Ili je u C-u stvar? Shocked

Edit: Program mi radi savršeno na unaprijed zadanom stringu, ali kada upišem svoj string mi bude romantičan i ispiše par srca i hrpu čudnih slova s kvačicama i drugih znakova. Sad Zašto, o zašto? Koristim i scanf("%[^\n]", s), scanf"%s", s) i gets(s) i uvijek bude isto.



_________________
With great power comes great electricity bill.
n!!!!
Theorem 2: Alexander the Great did not exist and he had an infinite number of limbs.


Zadnja promjena: PermutiranoPrase; 10:18 sri, 11. 4. 2012; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 10:12 sri, 11. 4. 2012    Naslov: Citirajte i odgovorite

aaaaahaaaa :) hvalaaa sego... :)
aaaaahaaaa Smile hvalaaa sego... Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
gflegar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 11:19 sri, 11. 4. 2012    Naslov: Citirajte i odgovorite

U tvojoj logici na papiru i jest problem :)
[quote="PermutiranoPrase"]
l = citam+1 => jer smo s indeksom 'citam' došli do zadnjeg razmaka prije početka riječi, a onda je petlja stala, pa je 'citam+1' prvo slovo u rijeci [/quote]
Ne, ova petlja
[code:1]while ( isspace(s[citam]))
++citam;
[/code:1]
se izvrsava tako dugo dok je [tt]s[citam][/tt] bjelina, dakle, kad smo na zadnjem razmaku prije rijeci petlja se jos jdnom izvrsi i pomakne [tt]citam[/tt] na indeks prvog slova rijeci.
[quote="PermutiranoPrase"]
d = citam => jer smo s indeksom 'citam' stigli do zadnjeg slova u riječi (zadnjeg slova prije razmaka), citam - 1 bi trebalo biti predzadnje slovo
[/quote]
Isto kao i u prvoj petlji
[code:1]while ( isalpha( s[citam] ))
++citam;
[/code:1]
ovo se izvrsava tako dugo dok je [tt]s[citam][/tt] slovo, pa se izvrsi i kod zadnjeg slova u rijeci i pomakne [tt]citam[/tt] na indeks iza zadnjeg slova rijeci.
Problem s ovime je kada je poslje zadnjeg znaka rijeci nul znak. Zbog onog dodatnog [tt]++citam[/tt] poslije petlji ti taj znak preskaces i nastavis "kopati" po memoriji koja mozda nije alocirana.
Probaj ovo ispraviti, mada mi se cini da ti je problem negdje i kod ucitavanja stringa, ali tu ti ne mogu pomoci posto nisi stavila taj dio koda :P
U tvojoj logici na papiru i jest problem Smile
PermutiranoPrase (napisa):

l = citam+1 ⇒ jer smo s indeksom 'citam' došli do zadnjeg razmaka prije početka riječi, a onda je petlja stala, pa je 'citam+1' prvo slovo u rijeci

Ne, ova petlja
Kod:
while ( isspace(s[citam]))
         ++citam;

se izvrsava tako dugo dok je s[citam] bjelina, dakle, kad smo na zadnjem razmaku prije rijeci petlja se jos jdnom izvrsi i pomakne citam na indeks prvog slova rijeci.
PermutiranoPrase (napisa):

d = citam ⇒ jer smo s indeksom 'citam' stigli do zadnjeg slova u riječi (zadnjeg slova prije razmaka), citam - 1 bi trebalo biti predzadnje slovo

Isto kao i u prvoj petlji
Kod:
while ( isalpha( s[citam] ))
         ++citam;

ovo se izvrsava tako dugo dok je s[citam] slovo, pa se izvrsi i kod zadnjeg slova u rijeci i pomakne citam na indeks iza zadnjeg slova rijeci.
Problem s ovime je kada je poslje zadnjeg znaka rijeci nul znak. Zbog onog dodatnog ++citam poslije petlji ti taj znak preskaces i nastavis "kopati" po memoriji koja mozda nije alocirana.
Probaj ovo ispraviti, mada mi se cini da ti je problem negdje i kod ucitavanja stringa, ali tu ti ne mogu pomoci posto nisi stavila taj dio koda Razz
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
PermutiranoPrase
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 10. 09. 2011. (16:08:19)
Postovi: (F4)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
10 = 17 - 7

PostPostano: 12:24 sri, 11. 4. 2012    Naslov: Citirajte i odgovorite

Hvala na upozorenjima! Joj, da, vidi stvarno. :D

Našla sam jedno što mi je krivo - nisam uključila ni ctype.h ni stdlib.h. :D Drugo, čini se da mi funkcija izokreni sad radi sasvim dobro, a greška je negdje u funkciji izbrisi koja briše svaku 5.riječ (radila sam 2 funkcije jer mi je bilo prvo tako lakše, mislila sam poslije preraditi sve u 1 funkciju). Kad nju pozovem, program se sruši.
Idem se sad s 'izbrisi' zabavljati.

Edit: Radi! :broccoli: Greška - ne inicijalizirah pocetni indeks na 0. :roll:
Hvala na upozorenjima! Joj, da, vidi stvarno. Very Happy

Našla sam jedno što mi je krivo - nisam uključila ni ctype.h ni stdlib.h. Very Happy Drugo, čini se da mi funkcija izokreni sad radi sasvim dobro, a greška je negdje u funkciji izbrisi koja briše svaku 5.riječ (radila sam 2 funkcije jer mi je bilo prvo tako lakše, mislila sam poslije preraditi sve u 1 funkciju). Kad nju pozovem, program se sruši.
Idem se sad s 'izbrisi' zabavljati.

Edit: Radi! Brokli Greška - ne inicijalizirah pocetni indeks na 0. Rolling Eyes



_________________
With great power comes great electricity bill.
n!!!!
Theorem 2: Alexander the Great did not exist and he had an infinite number of limbs.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
quark
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 10. 2011. (16:47:39)
Postovi: (DA)16
Spol: muško
Sarma = la pohva - posuda
20 = 26 - 6

PostPostano: 14:58 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

Motivacija mi je 2. zadatak iz 4. zadaće koji pokušavam sada riješiti na drukčiji način. Dakle, treba učiti string, četvrtu riječ izbrisati, sve ostale invertirati.
Ideja mi je da prvo učitam cijeli string pomoću [tt]gets[/tt] i izračunam koliko ima riječi.
Onda idem ispočetka skenirati cijeli string pomoću scanf (jer ignorira bjeline i "pamti" gdje je stao) u for petlji (ograda je broj riječi) i spremati takve stringove (tj. riječi) u novo polje stringova, osim ako nisu mod4 po redu.
Nakon toga funkciji [tt]invert[/tt] poslao bih svaki string u stringu i invertirao. Onda bih odmah nakon invertiranja, ispisao tu istu invertiranu riječ (string u stringu), i ako nije zadnja, printfao odmah nakon toga i razmak.

Prvo, može li se to tako? :D

Drugo, ako može, muči me realizacija.
Kad radim s poljem stringovima [tt]s[][][/tt] i želim poslati u tom polju i-ti string funkciji, kako to deklariram u funkciji i kako postupam onda s njim u toj funkciji?
I kako onda ispisati pomoću [tt]puts[/tt] taj string u stringu u mainu? :oops:

Hvala puno :)
Motivacija mi je 2. zadatak iz 4. zadaće koji pokušavam sada riješiti na drukčiji način. Dakle, treba učiti string, četvrtu riječ izbrisati, sve ostale invertirati.
Ideja mi je da prvo učitam cijeli string pomoću gets i izračunam koliko ima riječi.
Onda idem ispočetka skenirati cijeli string pomoću scanf (jer ignorira bjeline i "pamti" gdje je stao) u for petlji (ograda je broj riječi) i spremati takve stringove (tj. riječi) u novo polje stringova, osim ako nisu mod4 po redu.
Nakon toga funkciji invert poslao bih svaki string u stringu i invertirao. Onda bih odmah nakon invertiranja, ispisao tu istu invertiranu riječ (string u stringu), i ako nije zadnja, printfao odmah nakon toga i razmak.

Prvo, može li se to tako? Very Happy

Drugo, ako može, muči me realizacija.
Kad radim s poljem stringovima s[][] i želim poslati u tom polju i-ti string funkciji, kako to deklariram u funkciji i kako postupam onda s njim u toj funkciji?
I kako onda ispisati pomoću puts taj string u stringu u mainu? Embarassed

Hvala puno Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 16:22 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

Prvo: moze se.

Drugo: Kakve veze za funkciju ima je l' to solo string ili jedan od stringova u nizu? Mislis da funkcija [tt]sin()[/tt] razlikuje realni broj [tt]double x[/tt] i [tt]i[/tt]-ti element niza [tt]double y[17][/tt]?
Prvo: moze se.

Drugo: Kakve veze za funkciju ima je l' to solo string ili jedan od stringova u nizu? Mislis da funkcija sin() razlikuje realni broj double x i i-ti element niza double y[17]?



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
quark
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 10. 2011. (16:47:39)
Postovi: (DA)16
Spol: muško
Sarma = la pohva - posuda
20 = 26 - 6

PostPostano: 17:14 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

Super, hvala :D

Ali moj program svejedno pada :oops:

[code:1]#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TRUE 1
#define FALSE 0

void invert(char rijec[])
{
char temp;
int n,i;
n=strlen(rijec);
for(i=0;i<n/2;i++)
{
temp=rijec[i];
rijec[i]=rijec[n-i-1];
rijec[n-i-1]=temp;
}
return;
}

int broj_rijeci(char *str)
{
int brojac=0;
int razmak= TRUE;
while(*str!='\0')
{
if(*str==' ')
{
if(!razmak)
{
brojac++;
razmak = TRUE;
}
}
else razmak = FALSE;
++str;
}
if (!razmak) ++brojac;
return brojac;
}

int main()
{
int i, cnt, n, j, index=0;
char s[12684], novi_s[12684][12684];
gets(s);
cnt=broj_rijeci(s);
for(i=1;i<=cnt;i++)
{
if(!(i%4==0))
{scanf("%s", &novi_s[index]);
index++;
}
}
for(j=0;j<cnt;j++)
{
invert(novi_s[j]);
puts(novi_s[j]);
if(j!=cnt-1) printf(" ");
}
return 0;

}[/code:1]

(imam osjećaj da će se uskoro uvesti dnevni limit koliko kodova smiješ objaviti :oops:)
Super, hvala Very Happy

Ali moj program svejedno pada Embarassed

Kod:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TRUE 1
#define FALSE 0

void invert(char rijec[])
{
    char temp;
    int n,i;
    n=strlen(rijec);
    for(i=0;i<n/2;i++)
    {
        temp=rijec[i];
        rijec[i]=rijec[n-i-1];
        rijec[n-i-1]=temp;
    }
    return;
}

int broj_rijeci(char *str)
{
    int brojac=0;
    int razmak= TRUE;
    while(*str!='\0')
    {
        if(*str==' ')
        {
            if(!razmak)
            {
                brojac++;
                razmak = TRUE;
            }
        }
        else razmak = FALSE;
        ++str;
    }
    if (!razmak) ++brojac;
    return brojac;
}

int main()
{
    int i, cnt, n, j, index=0;
    char s[12684], novi_s[12684][12684];
    gets(s);
    cnt=broj_rijeci(s);
    for(i=1;i<=cnt;i++)
    {
            if(!(i%4==0))
            {scanf("%s", &novi_s[index]);
            index++;
            }
    }
    for(j=0;j<cnt;j++)
       {
           invert(novi_s[j]);
           puts(novi_s[j]);
           if(j!=cnt-1) printf(" ");
       }
    return 0;

}


(imam osjećaj da će se uskoro uvesti dnevni limit koliko kodova smiješ objaviti Embarassed)


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 18:23 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

Ako se ne varam, program ne moze imati vise od 64kB lokalnih varijabli. Sad izracunaj koliko je tvoj niz stringova velik. :)
Ako se ne varam, program ne moze imati vise od 64kB lokalnih varijabli. Sad izracunaj koliko je tvoj niz stringova velik. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
quark
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 10. 2011. (16:47:39)
Postovi: (DA)16
Spol: muško
Sarma = la pohva - posuda
20 = 26 - 6

PostPostano: 18:42 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

:lol:

Program ne radi; [tt]scanf[/tt] se ipak naljuti što prvo pozovem [tt]gets[/tt] i želi još jedanput da unesem string; i ako to napravim, printa mi svaku riječ u novi red; s razmakom na početku :D
Isplati li se ovo uopće popravljati...

Inače, hvala na podsjetniku da memorija nije veličine [tex]\aleph_{o}[/tex].
Laughing

Program ne radi; scanf se ipak naljuti što prvo pozovem gets i želi još jedanput da unesem string; i ako to napravim, printa mi svaku riječ u novi red; s razmakom na početku Very Happy
Isplati li se ovo uopće popravljati...

Inače, hvala na podsjetniku da memorija nije veličine [tex]\aleph_{o}[/tex].


[Vrh]
Korisnički profil Pošaljite privatnu poruku
gflegar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 19:05 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

ako tako hoces ucitavati malo se igraj s funkcijom [tt]sscanf[/tt], slicna je [tt]scanf[/tt]u ali ucitava iz stringa a ne iz [tt]stdin[/tt].
ako tako hoces ucitavati malo se igraj s funkcijom sscanf, slicna je scanfu ali ucitava iz stringa a ne iz stdin.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:08 čet, 12. 4. 2012    Naslov: Citirajte i odgovorite

@quark: Nije stvar velicine memorije, nego run-time stacka. 64kB i nije puno, ali eto...

Sto se programa tice, ako nesto pokupis i zelis opet ucitavati, mozes kako gflegar preporuca ili treba vratiti na buffer. To bas i nije preporucljivo, pa se nisam previse bavio s time. Za znakove to radis sa [tt]ungetc()[/tt]; ne znam ima li nesto slicno za stringove.
@quark: Nije stvar velicine memorije, nego run-time stacka. 64kB i nije puno, ali eto...

Sto se programa tice, ako nesto pokupis i zelis opet ucitavati, mozes kako gflegar preporuca ili treba vratiti na buffer. To bas i nije preporucljivo, pa se nisam previse bavio s time. Za znakove to radis sa ungetc(); ne znam ima li nesto slicno za stringove.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2, 3, 4, 5, 6 ... 11, 12, 13  Sljedeće
Stranica 5 / 13.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan