Hogy kell ezt a programot megírni C-ben?
Elkezdtem a C programozási nyelvet tanulni B. W. Kernighan és D. M. Ritchie könyve alapján. A könyvben vannak gyakorlatok is, és az egyik ilyen gyakorlathoz szeretnék segítséget kérni!
A feladat pontos szövege:
"Írjunk olyan programot, amely a bemenetet átmásolja a kimenetre, miközben az egy vagy több szóközből álló karakterláncokat egyetlen szóközzel helyettesíti!"
Próbálkoztam vele, de csak nem sikerül sehogy sem. Több kódot is írtam már, de nem akar sikerülni.
A legutóbbi kód amit írtam rá így néz ki:
#include <stdio.h>
int main()
{
int c;
while((c=getchar())!=EOF)
{
if (c==' ')
c=' ';
putchar(c);
}
}
Ahogy gondolkodtam rajta, az lehet a baj, a karakterenként vizsgálja meg a program a bemenetet, és ezért kapom vissza ugyanazt, mint amit beírtam. De akárhogy töröm a fejem, nem tudom, hogy hogyan is tudnám azt elérni, hogy a sok szóközből egyet csináljon a program. Ha valaki tudna segíteni, hogy most merre induljak el, azt nagyon megköszönném!
Első válaszolót követve:
int c, prevc=0;
while((c=getchar())!=EOF)
{
if ( !(c==' ' && cprev==' ') ) putchar(c);
prevc=c;
}
Egy helyen a prevc helyett cprev-et írtam, bocsi. :)
(A "prev" az "előző" rövidítése.)
"Első lépés: algoritmusok és adatszerkezetek. Aztán nézhetsz programnyelveket."
Jaja, focizni is úgy tanul meg az ember, hogy először elolvassa a nagy almanachot, és utána mindjárt jobb lesz. Aláírom, hogy a programozás a focinál elméletibb "sport", de 0, semmi, zéró értelme van leülni és olvasni róla anélkül, hogy csinálnád. Még a matematika, a lehető legelméletibb diszciplína és sokkal könnyebb, ha gyakorlatba ülteted.
Ha szintaktikailag és szemantikailag is helyes, akkor megoldotta a problémát.
Igen, kell az elmélet, de az nagyon hülye tanács hogy CSAK a könyv amíg nem ez és az. Csinálja és olvasson mellé (az internet tele van hasznosabbnál hasznosabb írásokkal). De csinálja.
Iostreammel egyetértek, nem szabad túl-elméletieskedni, de a 70%-os kollága szerintem arra akart utalni, hogy ha nem érti a kérdező, hogyan is kell megoldani a feladatot, akkor a kódig el sem jut. Tehát ha nem érti, hogy az aktuális és az előző karaktert is figyelembe kell venni az aktuális kiíráskor, és hogy ezt a feltételt hogyan kell leírni matematikailag (bool algebra), akkor még egy kész kód böngészésével sem biztos, hogy legközelebb tudni fogja.
Szóval ha nem is szigorú algoritmus alapok, de egy kis logikai előkészület kell. Az első válaszoló ebben sokat segített neki, igazából az már elég a megoldáshoz, és hogy legközelebb is megoldjon hasonló feladatokat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!