String einlesen, größten Buchstaben ausgeben

J

Julezzz

Hallo! Panik!

Also das Programm soll einen String einlesen und den größten Buchstaben (also den kleinsten Wert nach ASCII-Tabelle) ausgeben. Ich habe bisher nur diesen Müll zusammenbekommen:

Code:
#include <iostream>
#include <string>
using namespace std;


void readString(char *wort, int laenge);

void main ()


{
	const int laenge=12;
	char wort[laenge]={};
	


	cout << "Bitte geben Sie ein Wort ein\n";

	
	readString (wort, laenge);
	
	max = wort[0];
	for (int i=0; i<laenge; i++)
		

	{
		if (wort[i] > max)
		{
			max = wort[i];
		}
	}	

		cout << max;

}




void readString(char *wort, int laenge)
{	
	bool abbruch = false;
	char testeing;
	int input;
	int i=0;

	while(abbruch == false)
		{	
			cin.get(testeing);
			input = int (testeing);
			wort[i] = testeing;
			if(input != 10) 
				i++;
			if((input == 10) || (i >= laenge))
				abbruch = true; 
		}
	return;
}

Wobei ich nicht mal weiß, ob dieses void readString notwendig ist -.-

Könnt ihr mir bitte bitte helfen?

Dazu muss gesagt werden, dass ich mir bei der Aufgabenstellung nicht sicher bin, ob die Buchstabenanzahl vorgegeben werden muss. Ich habs erstmal mit der Zahl 12 probiert.
DANKE!
 
Hi,
Also erstens: Benutze bitte die Code-Tags, so wird das Programm schon um einiges lesbarer
Zweitens:Was meinst du mit dem "größten Buchstaben, also den kleinsten Asciiwert"?
Zurzeit suchst du den größten Asciiwert

readstring ist nicht notwendig

Ich bin mir nicht ganz sicher, ob du eigentlich C oder C++ verwenden willst (char* und cout...), ich hab hier einmal eine C-Lösung:

C++:
#include<stdio.h>

int main()
{
    char c[128],d=0;
    gets(c);
    for(int i=0;i<strlen(c);i++)
    {
        if(d<c[i])
            d=c[i];
    }
    printf("%c\n",d);
}

Gruß
 
Hi, ja ich will in C++ programmieren. Den kleinsten Wert suche ich, weil die großen Buchstaben die kleineren hex-Werte haben als die kleinen Buchsstaben. 'A' hat z.B. den Wert 41, während 'a' den Wert 61 hat. Also suche ich den kleinsten Wert des ganzen Wortes. Ich versuch's aber mal mit deiner Lösung.

Danke!
 
Nicht ganz: A ist 65, a 97
In sich drinn sind sie aber wieder normal geordnet, dh
65: A
66: B
...

Genau so, wie du beschrieben hast, arbeitet mein Programm übrigens :)

Edit: Hab nen kleinen Fehler entdeckt: nach dem gets(c) kommt noch ein d=*c; rein
 
ok, ich hab es irgendwie geschafft, dass er den größten Wert, also den kleinsten Buchstaben ausgibt :D

#include<iostream>
#include<string>
using namespace std;




Code:
void main()
{  int min;
	char arrayw[6]={};
	

 cin >> arrayw;
 
 min = arrayw[0];


 for (int i = 1; i <= 6-1; i++)
 {	
	 if (arrayw[i] > min)
	 min = arrayw[i];
 }
 
 cout << (char) min <<"\n";
 
}


Wenn ich aber versuche, das Gegenteil zu machen, also
Code:
if (arrayw[i] < min)
dann gibt er NICHTS aus. Ich habe die Vermutung, dass er diese 0 am Ende von Strings damit darstellen will...
 
Das Problem ist, dass du ja nicht weisst, ob auch tatsächlich soviel Zeichen eingegeben wurden
(Die 6-Grenze würde ich etwas erhöhen).
Wenn er zB nur "abc" schreibt, hast du abc, dann die '\0', und dann noch zwei Byte in denen irgendwas drinnensteht.
Du vergleichst die '\0' und die zwei Müllbyte auch mit

Deswegen das strlen von oben, das untersucht wie lang der String ist (bzw. wann die '\0' kommt)
 
Zurück