Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Tarvitsisin apua

iEemeli [18.01.2019 14:07:45]

#

Kirjoita ohjelma, joka lukee käyttäjältä syötettä kunnes käyttäjä syöttää merkkijonon "loppu". Tämän jälkeen ohjelma tulostaa käyttäjältä luettujen merkkijonojen määrän. Merkkijonojen määrään ei tule ottaa mukaan syötteen loppumista ilmoittavaa merkkijonoa "loppu".

Lisäys: .

Metabolix [18.01.2019 14:53:14]

#

Tässä on yksi mahdollinen toteutus C-kielellä. Tässä merkkijonon tulkitaan tarkoittavan välillä tai rivinvaihdolla eroteltua tekstin osaa, eli jokainen sana lasketaan erikseen.

#include <stdio.h>
#include <ctype.h>
int main() {
	int tila = 0, sanoja = 0, merkki;
	while ((merkki = getchar()) != EOF) {
		if (tila == 0 && merkki == 'l') {
			tila = 1;
		} else if (tila == 1 && merkki == 'o') {
			tila = 2;
		} else if (tila == 2 && merkki == 'p') {
			tila = 3;
		} else if (tila == 3 && merkki == 'p') {
			tila = 4;
		} else if (tila == 4 && merkki == 'u') {
			tila = 5;
		} else if (tila == 5 && isspace(merkki)) {
			break;
		} else if (tila != -1 && !isspace(merkki)) {
			sanoja += 1;
			tila = -1;
		} else if (isspace(merkki)) {
			tila = 0;
		}
	}
	printf("%d\n", sanoja);
}

Tässä on myös JavaScriptilla toteutus. Tässä yksi merkkijono voi sisältää monta sanaa, eli jokainen kyselykerta lasketaan erikseen. Voit ajaa JavaScript-koodia yleensä F12:lla aukeavassa selaimen kehittäjäkonsolissa.

var merkkijonoja = 0;
while (prompt("Anna merkkijono!") != "loppu") merkkijonoja++;
alert("Annoit " + merkkijonoja + " merkkijonoa.");

Jos tarvitset jotain muuta apua, kannattaa kertoa esimerkiksi, mistä ohjelmointikielestä on kyse ja mitä osaat ja mikä tässä tehtävässä on sinulle ongelma. Lisäksi kannattaa keksiä aiheille kuvaavampia otsikoita kuin ”tarvitsisin apua”.

TapaniS [18.01.2019 16:27:50]

#

Mainio toteutus, mutta pitäisikö muuttujan "merkki" olla kuitenkin char-tyyppiä?

Jos tämä on jokin kurssitehtävä, niin täydet pisteet varmasti tulee!

L2-K2 [19.01.2019 00:35:45]

#

TapaniS kirjoitti:

Mainio toteutus, mutta pitäisikö muuttujan "merkki" olla kuitenkin char-tyyppiä?

Jos tämä on jokin kurssitehtävä, niin täydet pisteet varmasti tulee!

Ei pidä, eikä edes oikeastaan saa olla jos tuon haluaa toimivan oikein kaikissa tapauksissa.

Kuten kyseisen funktion dokumentaatiosta nähdään, tiedoston päättymisen ilmaisuun käytettävä erikoismerkki "EOF" on "int" eikä "char" (esim. oheinen sivu: https://en.cppreference.com/w/c/io/getchar).

Mutta, joo, haluaisin nähdä kun joku oikeasti palauttaa tuon Metabolixin koodin kurssitehtävävastauksena ilman, että opettaja katsoo pahasti kieroon..

Spyro [19.01.2019 14:17:15]

#

Kuvauksen ja ajankohdan perusteella tämä on Helsingin yliopiston MOOC 2019 -kurssin tehtävä. Joutuu tekemään Java-porttauksen jos sillä meinaa pisteet saada :P.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta