|
Drónfelvételek
Sok túrázó még csapadékos időben is járja Magyarország túraútvonalait. Ilyenkor az ösvényről
drónnal készített felvételen kétféle dolgot szúrhatunk ki: az embereket és a pocsolyákat.
Ismerve a túrázók aktuális helyzetét, és tudva azt, hogy mindegyik túrázó szeretné szárazon
megúszni a túrát, könnyen meghatározható a túrázók helyzete a következő lépés megtétele utáni
pillanatban. A túrázók az ösvényeken balról jobbra haladnak, a következő lépés megtétele
utáni pillanatban mindegyikük a soron következő olyan helyre kerül, ahol nincs pocsolya. Így
lesznek olyan túrázók, akik csak egy kis lépést tesznek meg az ösvény soron következő
szomszédos szakaszára, de lesznek olyanok is, akiknek nagyobbat kell lépniük, hogy
átugorjanak az előttük lévő pocsolyákat követő ösvényszakaszra.
Adott a következő fejlécállomány:
myheader.h
#ifndef _MYHEADER_H #define _MYHEADER_H 1
void foo(const char *, char *);
#endif /* myheader.h */
letöltés szöveges állományként
Írja meg a myheader.h állományban deklarált foo() függvényt, amely
paraméterként megkapja két sztring kezdőcímét! A függvény az első sztringben egy ösvényt
leíró karaktersorozatot kap, amelyben csillag ('* ') karakter jelzi az embereket,
kukac ('@ ') karakter a pocsolyákat, egyenlőségjel ('= ') pedig az
ösvény szabad szakaszait. A foo() függvény állítsa elő a túrázók következő
pillanatbeli helyzetét, hasonló formátumú sztring formájában! Feltételezheti, hogy a
kiindulási helyzetben még senki sem érte el a túra célját, és nem is egy pocsolyába tűzték ki
a célt jelző zászlót, ezért mindegyik résztvevő előtt lesz még legalább egy üres terület,
ahova léphet.
Megjegyzés
A függvényt helyezze a foo.c nevű állományba, és ezt az állományt küldje
be megoldásként a kiértékelő rendszernek! Megoldását az alábbi állományok segítségével
tesztelheti. Megoldásának kiértékelését a tesztelő rendszer nem feltétlenül ezeknek az
állományoknak a felhasználásával végzi!
main.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "myheader.h"
int main() { char source[100], destination[100]; while (fgets(source, 100, stdin) != NULL) { if (source[strlen(source) - 1] == '\n') source[strlen(source) - 1] = '\0'; foo(source, destination); printf("%s\n", destination); } return EXIT_SUCCESS; }
letöltés szöveges állományként
Makefile
SRCS = main.c foo.c OBJS = $(SRCS:%.c=%.o) TARGETS = main
.PHONY: clean
all: $(TARGETS)
main: $(OBJS) $(CC) $(OBJS) -o main
%.o: %.c $(CC) -Wall -c $< -o $@
clean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
Példa bemenet
==*====*==== ===@=== **@@@==*@@=*@*= *=*=*=*=*=*= ==*@===*=*@=
letöltés szöveges állományként
A példa tesztprogram kimenete
===*====*=== ===@=== =*@@@*==@@*=@** =*=*=*=*=*=* ===@*===*=@*
letöltés szöveges állományként
|
|