Kezdőoldal » Számítástechnika » Programozás » Hogy kell ezt a programot...

Sylar007 kérdése:

Hogy kell ezt a programot megírni C-ben?

Figyelt kérdés

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!


2013. szept. 26. 11:26
1 2
 1/12 anonim ***** válasza:
100%
Például tárold el mindig a karaktert, mint "előző karakter", és vizsgáld meg, hogy az előző karakter szóköz-e. Ha igen, akkor nem kell kiírni semmit abban az iterációban, hiszen előtte már ki lett írva a szóköz. :)
2013. szept. 26. 11:28
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
100%
Ja persze a sorrendre ügyelj. Tehát vizsgálat, kiírás, tárolás. :)
2013. szept. 26. 11:29
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
16%
Első lépés: algoritmusok és adatszerkezetek. Aztán nézhetsz programnyelveket.
2013. szept. 26. 12:23
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:

Első válaszolót követve:


int c, prevc=0;

while((c=getchar())!=EOF)

{

if ( !(c==' ' && cprev==' ') ) putchar(c);

prevc=c;

}

2013. szept. 26. 12:36
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:

Egy helyen a prevc helyett cprev-et írtam, bocsi. :)

(A "prev" az "előző" rövidítése.)

2013. szept. 26. 12:38
Hasznos számodra ez a válasz?
 6/12 iostream ***** válasza:

"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.

2013. szept. 26. 13:22
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
0%
Oké, de itt nem a programok betanulásáról van szó. A programja lehet szintaktikailag és szemantikailag is helyes, de zagyvaságot fog eredményül kapni, ha nem tudja hogyan építse fel a programlogikát.
2013. szept. 26. 13:46
Hasznos számodra ez a válasz?
 8/12 iostream ***** válasza:

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.

2013. szept. 26. 13:53
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
Jó elismerem, nem túl jó ötlet. De akkor is érdemes olyan tutorialokat nézni, ahol van hozzá egy kis rizsa is. Esetleg egy folyamatábra és egy leírás pontról pontra. Szemantika nálam nem az elvárt működést jelenti, hanem a programnyelv elemeinek valid kompozícióját.
2013. szept. 26. 14:00
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

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.

2013. szept. 26. 14:16
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!