Add solution for const-assignment.

This commit is contained in:
paulusja 2025-11-20 13:01:43 +01:00
parent 5a3b146df3
commit 8b9d9bd62d

View File

@ -16,8 +16,9 @@
#define PUFFER_GROESSE 100
char *gibTextEin(char *ausgabeText, char *puffer, unsigned int groesse);
void gibSummeAus(unsigned int zahlen[], unsigned int anzahl);
char *gibTextEin(const char *ausgabeText, char *puffer, unsigned int groesse);
void gibSummeAus(const unsigned int zahlen[], unsigned int anzahl);
unsigned int konvertiereZahlen(const char *text, unsigned int zahlen[], unsigned int maxZahlen);
int main()
{
@ -34,7 +35,7 @@ int main()
return EXIT_SUCCESS;
}
char *gibTextEin(char *ausgabeText, char *puffer, unsigned int groesse)
char *gibTextEin(const char *ausgabeText, char *puffer, unsigned int groesse)
{
printf("%s", ausgabeText);
fgets(puffer, groesse, stdin);
@ -47,7 +48,68 @@ char *gibTextEin(char *ausgabeText, char *puffer, unsigned int groesse)
return puffer;
}
void gibSummeAus(unsigned int zahlen[], unsigned int anzahl)
// 1. Variante mit strtok (zahl steht separat) und a) sscanf oder b) stroul
// unsigned int konvertiereZahlen(const char *text, unsigned int zahlen[], unsigned int maxZahlen)
// {
// unsigned int anzahl = 0;
// char *kopie = malloc((strlen(text)+1) * sizeof(char));
// if(kopie != NULL)
// {
// const char *trenner = " \t;,.:\n";
// char *token;
// strcpy(kopie, text);
// token = strtok(kopie, trenner);
// while(token != NULL && anzahl < maxZahlen)
// {
// //if(sscanf(token, "%u", &zahlen[anzahl]) == 1)
// // anzahl++;
// char *endZgr;
// zahlen[anzahl] = strtoul(token, &endZgr, 10);
// if(token != endZgr)
// anzahl++;
// token = strtok(NULL, trenner);
// }
// }
// free(kopie);
// return anzahl;
// }
// 2. Variante direkt mit strtoul (Zahl ist nahtlos in String integriert)
unsigned int konvertiereZahlen(const char *text, unsigned int zahlen[], unsigned int maxZahlen)
{
unsigned int anzahl = 0;
const char *anfangsZgr = text;
char *endZgr;
while(anzahl < maxZahlen && *anfangsZgr != '\0')
{
zahlen[anzahl] = strtoul(anfangsZgr, &endZgr, 10);
if(endZgr != anfangsZgr)
{
anfangsZgr = endZgr;
anzahl++;
}
else
{
anfangsZgr++;
}
}
return anzahl;
}
void gibSummeAus(const unsigned int zahlen[], unsigned int anzahl)
{
int summe = 0;