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

Di je greška? (zadatak)
WWW:

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
perica
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 03. 2016. (10:15:48)
Postovi: (5)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 10:28 sri, 2. 3. 2016    Naslov: Di je greška? Citirajte i odgovorite

Imam zadatak:
Napišite program koji učitava jednu riječ s najviše 16241
znakova, te ispisuje koliko se puta u toj riječi pojavljuje
podstring "lrs".

I zašto sad moj program nije dobar:

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

void f(void) {
// Count.
int lrs;

for (;;) {
int c = getchar();
if (c == ' ') {
break;
} else if (c == 'l') {
if (getchar() == 'r') {
if (getchar() == 's') {
lrs++;
}
}
}
}

printf("%d\n", lrs);
}

int main(void) {
f();

return 0;
}
[/code:1]
Imam zadatak:
Napišite program koji učitava jednu riječ s najviše 16241
znakova, te ispisuje koliko se puta u toj riječi pojavljuje
podstring "lrs".

I zašto sad moj program nije dobar:

Kod:

#include <stdio.h>

void f(void) {
        // Count.
        int lrs;

        for (;;) {
                int c = getchar();
                if (c == ' ') {
                        break;
                } else if (c == 'l') {
                        if (getchar() == 'r') {
                                if (getchar() == 's') {
                                        lrs++;
                                }
                        }
                }
        }

        printf("%d\n", lrs);
}

int main(void) {
        f();

        return 0;
}


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


Pridružen/a: 07. 10. 2012. (14:09:25)
Postovi: (62)16
Sarma = la pohva - posuda
14 = 15 - 1
Lokacija: Zagreb

PostPostano: 11:08 sri, 2. 3. 2016    Naslov: Citirajte i odgovorite

Neće funkcionirati za npr. "lrlrs"
Neće funkcionirati za npr. "lrlrs"


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
perica
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 03. 2016. (10:15:48)
Postovi: (5)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 11:12 sri, 2. 3. 2016    Naslov: Citirajte i odgovorite

[quote="luka_m"]Neće funkcionirati za npr. "lrlrs"[/quote]
Kako neće, vraća 0 i kolko sam ja skužio zadatak to je dobro.
luka_m (napisa):
Neće funkcionirati za npr. "lrlrs"

Kako neće, vraća 0 i kolko sam ja skužio zadatak to je dobro.


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


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 11:24 sri, 2. 3. 2016    Naslov: Citirajte i odgovorite

[quote="perica"][quote="luka_m"]Neće funkcionirati za npr. "lrlrs"[/quote]
Kako neće, vraća 0 i kolko sam ja skužio zadatak to je dobro.[/quote]
Kako je dobro? Pa podstring [tt]"lrs"[/tt] se pojavljuje jednom. Vidi: [size=18][tt]lr[color=red]lrs[/color][/tt][/size].
Dakle, treba ispisati [tt]1[/tt].



Još jedna sitnica. Nema potrebe da ručno uspoređuješ tri po tri znaka. Pogledaj što radi funkcija [url=https://www-s.acm.illinois.edu/webmonkeys/book/c_guide/2.14.html#strncmp][tt]strncmp[/tt][/url].
perica (napisa):
luka_m (napisa):
Neće funkcionirati za npr. "lrlrs"

Kako neće, vraća 0 i kolko sam ja skužio zadatak to je dobro.

Kako je dobro? Pa podstring "lrs" se pojavljuje jednom. Vidi: lrlrs.
Dakle, treba ispisati 1.



Još jedna sitnica. Nema potrebe da ručno uspoređuješ tri po tri znaka. Pogledaj što radi funkcija strncmp.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
perica
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 03. 2016. (10:15:48)
Postovi: (5)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 11:30 sri, 2. 3. 2016    Naslov: Rješeno Citirajte i odgovorite

O bože, pa ko da su mi vrane mozak popile ...

Hvala dečki D
O bože, pa ko da su mi vrane mozak popile ...

Hvala dečki :D


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


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

PostPostano: 12:21 sri, 2. 3. 2016    Naslov: Citirajte i odgovorite

Ima tu jos problema:
1. ako je ucitana jedna rijec, nema razmaka, pa ce citanje zaglaviti;
2. takodjer ako ovi [tt]getchar[/tt]-ovi u [tt]if[/tt]-ovima "pojedu" razmake, program ce brojati i druge ucitane rijeci, ako ih ima (recimo [tt]"abl ablr xlrsy"[/tt] vraca 1).

Ova dva buga se mogu i poklopiti, pa ce program zapeti ako sve ucitane rijeci (osim eventualno zadnje, ako iza nje ne slijedi razmak nego kraj stringa) zavrsavaju s [tt]"l"[/tt] ili [tt]"lr"[/tt].

Usput, kraj rijeci su i novi redak, tab,...

Zadatak je ocito napisan tako da se ucita cijeli string (hintovi: poznata max. duljina i cinjenica da se ucitava rijec, sto radi [tt]%s[/tt] u [tt]scanf[/tt]-u) i onda se njega "proucava". Dobro je nauciti prepoznavati takve "hintove" u zadacima, da se na kolokviju ustedi dragocjeno vrijeme, kao i da se izbjegnu ovakve trivijalne greske.
Ima tu jos problema:
1. ako je ucitana jedna rijec, nema razmaka, pa ce citanje zaglaviti;
2. takodjer ako ovi getchar-ovi u if-ovima "pojedu" razmake, program ce brojati i druge ucitane rijeci, ako ih ima (recimo "abl ablr xlrsy" vraca 1).

Ova dva buga se mogu i poklopiti, pa ce program zapeti ako sve ucitane rijeci (osim eventualno zadnje, ako iza nje ne slijedi razmak nego kraj stringa) zavrsavaju s "l" ili "lr".

Usput, kraj rijeci su i novi redak, tab,...

Zadatak je ocito napisan tako da se ucita cijeli string (hintovi: poznata max. duljina i cinjenica da se ucitava rijec, sto radi %s u scanf-u) i onda se njega "proucava". Dobro je nauciti prepoznavati takve "hintove" u zadacima, da se na kolokviju ustedi dragocjeno vrijeme, kao i da se izbjegnu ovakve trivijalne greske.



_________________
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
perica
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 03. 2016. (10:15:48)
Postovi: (5)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 11:14 čet, 3. 3. 2016    Naslov: Citirajte i odgovorite

[quote="vsego"]Ima tu jos problema:
1. ako je ucitana jedna rijec, nema razmaka, pa ce citanje zaglaviti;
2. takodjer ako ovi [tt]getchar[/tt]-ovi u [tt]if[/tt]-ovima "pojedu" razmake, program ce brojati i druge ucitane rijeci, ako ih ima (recimo [tt]"abl ablr xlrsy"[/tt] vraca 1).

Ova dva buga se mogu i poklopiti, pa ce program zapeti ako sve ucitane rijeci (osim eventualno zadnje, ako iza nje ne slijedi razmak nego kraj stringa) zavrsavaju s [tt]"l"[/tt] ili [tt]"lr"[/tt].

Usput, kraj rijeci su i novi redak, tab,...

Zadatak je ocito napisan tako da se ucita cijeli string (hintovi: poznata max. duljina i cinjenica da se ucitava rijec, sto radi [tt]%s[/tt] u [tt]scanf[/tt]-u) i onda se njega "proucava". Dobro je nauciti prepoznavati takve "hintove" u zadacima, da se na kolokviju ustedi dragocjeno vrijeme, kao i da se izbjegnu ovakve trivijalne greske.[/quote]

Rješio sam ga na kraju bez arraya, možda probam posle i pomoću %s ako je tako kraće.
vsego (napisa):
Ima tu jos problema:
1. ako je ucitana jedna rijec, nema razmaka, pa ce citanje zaglaviti;
2. takodjer ako ovi getchar-ovi u if-ovima "pojedu" razmake, program ce brojati i druge ucitane rijeci, ako ih ima (recimo "abl ablr xlrsy" vraca 1).

Ova dva buga se mogu i poklopiti, pa ce program zapeti ako sve ucitane rijeci (osim eventualno zadnje, ako iza nje ne slijedi razmak nego kraj stringa) zavrsavaju s "l" ili "lr".

Usput, kraj rijeci su i novi redak, tab,...

Zadatak je ocito napisan tako da se ucita cijeli string (hintovi: poznata max. duljina i cinjenica da se ucitava rijec, sto radi %s u scanf-u) i onda se njega "proucava". Dobro je nauciti prepoznavati takve "hintove" u zadacima, da se na kolokviju ustedi dragocjeno vrijeme, kao i da se izbjegnu ovakve trivijalne greske.


Rješio sam ga na kraju bez arraya, možda probam posle i pomoću %s ako je tako kraće.


[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.
Stranica 1 / 1.

 
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