C :: Aufgabe #16 :: Lösung #1

5 Lösungen Lösungen öffentlich
#16

Vokale zählen in einem beliebigen Satz

Anfänger - C von Dome - 28.12.2012 um 23:58 Uhr
Programmieren Sie ein Programm, welches die Anzahl aller Vokale in einem zuvor eingegebenen Satz ausgibt.
Optional wäre die Ausgabe wie oft welcher Vokal in dem Satz vorhanden ist.

Konsolenausgabe:


Geben Sie einen Satz ein :
Dies ist ein toller Satz.
Anzahl der Vokale : 8
A: 1
E: 3
I: 3
O: 1
U: 0
#1
vote_ok
von devnull (8870 Punkte) - 13.07.2013 um 18:40 Uhr
Quellcode ausblenden C-Code
/********************************************
 * vocals.c   count vocals
 *
 * OS     :   GNU/Linux
 * compile:   gcc -Wall -o vocals vocals.c
 *
 * devnull    13-07-2013                
 ********************************************/
#include <stdio.h>
#include <ctype.h>
#include <string.h>

#define BUF_LEN  1000

const char vocals[] = {'?','A','E','I','O','U'};


/************
 * functions
 ************/
/* read input line from stdin */
int readln( char *line )
{
	int len;
	if (fgets(line, BUF_LEN, stdin) != NULL) {
		line[BUF_LEN]='\0';
		len=strlen(line);
		return len;
	}
	else
		return -1;
}

/* index in vocals array */
int ivocal( char c )
{
	int i;
	for (i=1;i<6;i++)
		if (toupper(c)==vocals[i]) return i;
	return 0;
}

/* count vocal frequency */
void count_vocals( char *buf, int *cvoc )
{
	while (*buf) (cvoc[ivocal(*buf++)])++;
}

/* print results */
void print_vocals( int *cvoc )
{
	int i,cv;
	for (i=1,cv=0;i<6;i++) {
		printf( "%c : %3d\n", vocals[i],cvoc[i] );
		if (i>0) cv+=cvoc[i];
	}
	printf( "Anzahl der Vokale: %d\n", cv );
}

/* main */
int main()
{
    char buffer[BUF_LEN+1];
    int cvocals[6];
    memset(cvocals,0,6*sizeof(int));

	printf("Geben Sie einen Satz ein:\n");
	if (readln(buffer) > 0) {
		count_vocals(buffer,cvocals);
		print_vocals(cvocals);
	}
	return 0;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2110342

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.