Di je greška?
Select messages from
# through # FAQ
[/[Print]\]

Forum@DeGiorgi -> Programiranje 1 i 2

#1: Di je greška? Autor/ica: perica PostPostano: 10:28 sri, 2. 3. 2016
    —
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;
}

#2:  Autor/ica: luka_mLokacija: Zagreb PostPostano: 11:08 sri, 2. 3. 2016
    —
Neće funkcionirati za npr. "lrlrs"

#3:  Autor/ica: perica PostPostano: 11:12 sri, 2. 3. 2016
    —
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.

#4:  Autor/ica: mdokoLokacija: Heriot-Watt University, Edinburgh PostPostano: 11:24 sri, 2. 3. 2016
    —
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.

#5: Rješeno Autor/ica: perica PostPostano: 11:30 sri, 2. 3. 2016
    —
O bože, pa ko da su mi vrane mozak popile ...

Hvala dečki :D

#6:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 12:21 sri, 2. 3. 2016
    —
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.

#7:  Autor/ica: perica PostPostano: 11:14 čet, 3. 3. 2016
    —
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.



Forum@DeGiorgi -> Programiranje 1 i 2


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Stranica 1 / 1.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin