Frage von CCode, 13

Habe mal eine Frage zum folgende C Code ?

Hi Leute!! Habe da mal eine kurze Frage ? .Ich muss eine C Programm auf einen Microcontroller schreiben, welche es die Großbuchstaben auf Kleinbuchstaben und umgekehrt wandelt ?+die natürliche Zahlen in Römische unwandelt ? Hier habt ihr vorab meinen C Code, der Irgendwie nicht funktionieren möchte. Ich hoffe ihr könnt mir einen Lösungsansatz geben. Vielen Dank für eure Hilfe .

void buchstabenUmwandlung(unsigned int len, char*quelle) { unsigned int i=0; j=0; char einString[128];

while(i<128) { einString[i]=quelle[i]; if((einString[i]=>97)) && (einString[i]<=122)) { einString[i]=toupper(einStrinng[i]);
} else if((einString[i]>=65) && (einString[i]<=90) { einString[i]=tolower(einString[i]); }

   switch(einString[i])
   {
     case 49: einString[i]='I'; break;                    
     case 50: einString[i]="II";
     case 51: einString[i]="III";
     case 52: einString[i]="IV";
     case 53: einString[i]= 'V';
     case 54: einString[i]="VI";
     case 55: einString[i]= "VII",
     case 56: einString[i]="VIII";
     case 54: einString[i]="IX";
   }

   quelle[i]=einString[i];
   i++;

} } In etwa so sollte die Ein und Ausgabe ausgeben. Es müssen alle 4 Fälle abgedeckt werden.

1.Fall Eingabe sollte in etwa so aussehen: 2 Ausgabe: II

2.Fall Eingabe sollte in etwa so aussehen: 2HaLlO Ausgabe: IIhAlLo

3.Fall Eingabe sollte in etwa so aussehen: Ha2lLo Ausgabe: hAIILlO

4.Fall Eingabe sollte in etwa so aussehen: hALlo2 Ausgabe: HalLOII

Antwort
von CCode, 4

in etwa so sollte die Ein und Ausgabe ausgeben. Es müssen alle 4 Fälle abgedeckt werden.

1.Fall Eingabe sollte in etwa so aussehen: 2

Ausgabe: II

2.Fall Eingabe sollte in etwa so aussehen: 2HaLlO

Ausgabe: IIhAlLo

3.Fall Eingabe sollte in etwa so aussehen: Ha2lLo

Ausgabe: hAIILlO

4.Fall Eingabe sollte in etwa so aussehen: hALlo2
Ausgabe: HalLOII

void buchstabeUmwandlung(unsigned int len, char *quelle)

{

unsigned int i=0,j=0;

char einString[128];

for(i=0;i<128;i++)

{

einString[i]=quelle[i];

if ((einString[i]>=97) && (einString[i]<=122))

{

einString[i] = toupper(einString[i]);

}

else if ((einString[i]>=65) && (einString[i]<=90))

{

einString[i] = tolower(einString[i]);

}

switch(einString[i])

{

//einString[i]=(char*) realloc(einString,132);

case 49: einString[i] = ‘I’; break;

case 50: einString[i] = “II”; break;

case 51: einString[i] = “III”; break;

case 52: einString[i] = “IV”; break;

case 53: einString[i] = 'V'; break;

case 54: einString[i] = “VI”; break;

case 55: einString[i] = “VII”; break;

case 56: einString[i] = “VIII”; break;

case 57: einString[i] = “IX”; break; //IX 9

default: break;

}

quelle[i]=einString[i];

}

}

Antwort
von safur, 6

Kannst du den Code nochmal komplett schicken?

einStrinng[i]);

--> Schreibfehler..

Kommentar von CCode ,

in etwa so sollte die Ein und Ausgabe ausgeben. Es müssen alle 4 Fälle abgedeckt werden.

1.Fall Eingabe sollte in etwa so aussehen: 2
Ausgabe: II

2.Fall Eingabe sollte in etwa so aussehen: 2HaLlO
Ausgabe: IIhAlLo

3.Fall Eingabe sollte in etwa so aussehen: Ha2lLo
Ausgabe: hAIILlO

4.Fall Eingabe sollte in etwa so aussehen: hALlo2
Ausgabe: HalLOII

void buchstabeUmwandlung(unsigned int len, char *quelle)
{

unsigned int i=0,j=0;
char einString[128];
for(i=0;i<128;i++)
{
einString[i]=quelle[i];

if ((einString[i]>=97) && (einString[i]<=122))
{
einString[i] = toupper(einString[i]);
}
else if ((einString[i]>=65) && (einString[i]<=90))
{
einString[i] = tolower(einString[i]);
}

switch(einString[i])
{
//einString[i]=(char*) realloc(einString,132);

case 49: einString[i] = ‘I’; break;
case 50: einString[i] = “II”; break;
case 51: einString[i] = “III”; break;
case 52: einString[i] = “IV”; break;
case 53: einString[i] = 'V'; break;
case 54: einString[i] = “VI”; break;
case 55: einString[i] = “VII”; break;
case 56: einString[i] = “VIII”; break;
case 57: einString[i] = “IX”; break; //IX 9

default: break;
}

quelle[i]=einString[i];

}
}

Kommentar von safur ,

Um die Fälle zu behandeln würde ich per For-Schleife Zeichen für Zeichen den String durchgehen

Zeichen isdigit()?
--> Ja! Römische Zahl per Switch
--> Nein! Frage (Kleinbuchstabe -> Großbuchstabe; Großbuchstabe -> Kleinbuchstabe)

Hilft dir das schon mal etwas weiter?

Kommentar von CCode ,

Es hilft mir schon etwas, allerdings kannst du es mir C Codemäßig erklären, ich weiss nicht wie ich es umsetzen soll. Meinst du so if(isdigit(zeichen)) und weiter........... meine Betreuer meint auch, dass ich zwei Felder deklarieren muss, mit zwei Schleifen die eine Schelife für das EingabeString und die andere von die AusgabeString

Vielen Dank für deine Hilfe

Kommentar von safur ,

Klar, aber du sollst auch verstehen was du da machst :)

Schön wenn dir jemand nen Code liefert. Du solltest auch verstehen, warum usw.

Verstehst du?

 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten