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; } |
luka_m (napisa): |
Neće funkcionirati za npr. "lrlrs" |
perica (napisa): | ||
Kako neće, vraća 0 i kolko sam ja skužio zadatak to je dobro. |
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. |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.