Buchstaben in Array klein bekommen.

om1krnoy

Grünschnabel
Hallo zusammen :)

Ich lerne seit ein paar Monaten ein bisschen C, bin also noch der totale Anfänger und habe seit gestern mit einem Program. Ich möchte einfach verschieden Wörter nach wiederum anderen wörtern durchsuchen und wenn diese vorhanden sind sie raus schreiben lassen.
Das funktioniert auch schon aber nun habe ich das Problem mit den großen Buchstaben. Wenn ich jetzt nämlich aus dem Wort "Achtung" die acht rauslesen will funktioniert dies nicht, da ja Achtung mit einem großen A beginnt und acht mit einem kleinen. Deshalb möchte ich alle Buchstaben klein haben. Ich weiß mittlerweile dass ich mit "tolower" die Buchstaben klein bekomme aber ich weiß nicht wie ich dies hier in meinen Programm realisieren soll. Ich vermute dass ich das eine Array zweidimensional machen muss aber wie ich es auch anstelle kommen meistens fehler :/ Kann mir da vielleicht wer helfen****
Häng mal noch das Progamm mit an. Schon mal vielen Dank

Gruß Benny

Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>


	char *zahlen[] = {"eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf",'\0'};

	char *woerter[] = {"Endreim","Kurzweil", "Nachtfalter", "Wohnviertel", "Neunauge", "Weinstein",
		              "Erdreich", "Achtung", "Segelflieger", "Pfalzwein", "Radreifen", "Gehhelfer",
					  "Leinsamen",'\0'};

	
int main(void)
{
	int i, j, sum = 0;
	
	
	for (i = 0; woerter[i] != '\0'; i++){
		for(j = 0; zahlen[j] != '\0'; j++){
			
			if(strstr(woerter[i], zahlen[j])){
				printf("%13s: ... %10s ...%10d\n", woerter[i], zahlen[j], j+1);
				sum += (j+1);
				}		
		}
	}
	printf("----------------------------------------------\n");
    printf("%43d \n", sum);
	return 0;
}
 
Ja hab ich jetzt auch mal versucht.
Aber wenn ich es so mache schreibt er mir leider trotzdem die Anfangsbuchstaben groß

Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>


	char *zahlen[] = {"eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf",'\0'};

	char *woerter[] = {"Endreim","Kurzweil", "Nachtfalter", "Wohnviertel", "Neunauge", "Weinstein",
		              "Erdreich", "Achtung", "Segelflieger", "Pfalzwein", "Radreifen", "Gehhelfer",
					  "Leinsamen",'\0'};

	
int main(void)
{
	int i, j, sum = 0,t;
	

	for(t = 0;woerter[t] != '\0' ; t++){
		klein[t] =tolower(woerter[t]);
		
	}
	
	for (i = 0; klein[i] != '\0'; i++){
		for(j = 0; zahlen[j] != '\0'; j++){
			
			if(strstr(klein[i], zahlen[j])){
				printf("%13s: ... %10s ...%10d\n", klein[i], zahlen[j], j+1);
				sum += (j+1);
				}		
		}
	}
	printf("----------------------------------------------\n");
    printf("%43d \n", sum);
		return 0;
}
 
Moin,

und das lässt sich so compilieren :confused:
Wo ist denn klein deklariert :confused:


Und was genau soll denn
C++:
int i, j, sum = 0,t;
machen :confused:

Meinst Du vlt.
C++:
int i, j, sum, t = 0;

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Sorry hatte ich im Programm aber nicht hier mit reingeschrieben

Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>


	char *zahlen[] = {"eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf",'\0'};

	char *woerter[] = {"Endreim","Kurzweil", "Nachtfalter", "Wohnviertel", "Neunauge", "Weinstein",
		              "Erdreich", "Achtung", "Segelflieger", "Pfalzwein", "Radreifen", "Gehhelfer",
					  "Leinsamen",'\0'};

	char *klein[200];
int main(void)
{
	int i, j, sum = 0,t;
	

	for(t = 0;woerter[t] != '\0' ; t++){
		klein[t] =tolower(woerter[t]);
		
	}
	
	for (i = 0; klein[i] != '\0'; i++){
		for(j = 0; zahlen[j] != '\0'; j++){
			
			if(strstr(klein[i], zahlen[j])){
				printf("%13s: ... %10s ...%10d\n", klein[i], zahlen[j], j+1);
				sum += (j+1);
				}		
		}
	}
	printf("----------------------------------------------\n");
    printf("%43d \n", sum);
		return 0;
}
 
ok, dann musst Du nur noch das
C++:
int i, j, sum = 0,t;
korrigieren - siehe oben !

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Das

Code:
int i, j, sum = 0, t;

ist völlig einwandfrei. Etwas unschön, i, j und t uninitialisiert rumfliegen zu lassen, aber die werden dann in der for-Schleife gesetzt. Und sum wird mit 0 initialisiert. Das ist schon ok so.


Deine Schleife mit klein zu Beginn setzt nur die Anfangsbuchstaben der Wörter klein. Wenn du die Wörter komplett klein machen willst, musst du eine verschachtelte Schleife bauen.
 
Zuletzt bearbeitet:
Moin,

Das
Code:
int i, j, sum = 0, t;
ist völlig einwandfrei. Etwas unschön, i, j und t uninitialisiert rumfliegen zu lassen, aber die werden dann in der for-Schleife gesetzt. Und sum wird mit 0 initialisiert. Das ist schon ok so

oops - Du hast natürlich völlig Recht .... finde ich aber böse unleserlich !
Würde es immer so schreiben, damit sofort klar ist, was beabsichtigt ist (wobei mich auch frage, warum die ersten drei Variablen nicht intiialisiert werden ?)
Code:
int i, j, t;
int sum = 0;

Gruß
Klaus
 
Zurück