Aufgabe: While Schleife als for Schleife schreiben - benötige Hilfe
-
Hallo,
ich habe als Aufgabenstellung eine Funktion mit einer for-Schleife zu schreiben, in der in einem String die Leerzeichen entfernt werden sollen.
Habe es mit einer while-Schleife geschafft, aber ich komme einfach nicht drauf, wie ich es mit einer for-Schleife schreiben soll.
Kann mir bitte jemand helfen? Mein Programm sieht so aus:#include <stdlib.h> #include <stdio.h> #include <string.h> void ohneBlanks(char *str) { char *ptr = str; while(*str != '\0') { if(*str != ' ') *ptr++ = *str; str++; } *ptr = '\0'; str = ptr; } int main (int argc, char *argv[]) { char s [ ] = "Dies ist bald ein Text ohne Leerzeichen"; ohneBlanks(s); printf("%s", s); // ergibt DiesistbaldeinTextohneLeerzeichen return (0); }
-
#include <stdlib.h> #include <stdio.h> #include <string.h> void ohneBlanks(char *str) { char *ptr; for (ptr = str; *str != '\0'; ++str) { if (*str != ' ') { *ptr++ = *str; } } *ptr = '\0'; str = ptr; } int main (int argc, char *argv[]) { char s[] = "Dies ist bald ein Text ohne Leerzeichen"; ohneBlanks(s); printf("%s", s); // ergibt DiesistbaldeinTextohneLeerzeichen return 0; }
-
so einfach :D? oh man, ich hab mir etwas zu kompliziert vorgestellt...
danke
-
escoo schrieb:
void ohneBlanks(char *str) { char *ptr = str; while(*str != '\0') { if(*str != ' ') *ptr++ = *str; str++; } *ptr = '\0'; str = ptr; }
void ohneBlanks(char *str) { char *ptr = str; for(;*str != '\0';) { if(*str != ' ') *ptr++ = *str; str++; } *ptr = '\0'; str = ptr; }
-
Habe hier nochmal eine Frage zu den Funktionen, da ich das mit den Parametern und Rückgabewerten noch nicht ganz verstanden habe.
Die Aufgabenstellung lautet:Es sei ein Typ tiMatrix für quadratische Matrizen wie folgt gegeben:
#define MAX_ORD 10
typedef int tiMatrix[MAX_ORD][MAX_ORD];Schreiben Sie eine Funktion maximum, die in einer solchen Matrix M der Ordnung
m (< MAX_ORD) durch Vergleiche den größten Wert sucht und als Funktionswert zurück gibt.Meine bisherige Lösung lautet:
#include <stdlib.h> #include <stdio.h> #define MAX_ORD 10 typedef int tiMatrix[MAX_ORD][MAX_ORD]; int maximum(tiMatrix x) { int i, a; int erg = 0; for(i = 0; i < MAX_ORD; i++) { for(a = 0; a < MAX_ORD; a++) { if(x[a][i] > erg) erg = x[a][i]; } } return erg; } int main (int argc, char *argv[]) { tiMatrix M[MAX_ORD][MAX_ORD]; int g_wert; g_wert = maximum(M); return 0; }
ich weiß nicht wo sonst noch Fehler drinnen sind, oder ob diese Funktion jetz das tut, was sie tun soll, aber der Compiler liefert ständig:
-------------------------------------------------------------------------------
Fehler 1 error C2664: 'maximum': Konvertierung des Parameters 1 von 'tiMatrix [10][10]' in 'int [][10]' nicht möglich2 IntelliSense: Das Argument vom Typ ""tiMatrix ()[10]"" ist mit dem Parameter vom Typ ""int ()[10]"" inkompatibel.
-------------------------------------------------------------------------------kann mir evtl. jemand weiterhelfen, bzw die Funktion verbessern mit den richtigen Rückgabewerten usw. ?
-
Siehe Kommentar.
escoo schrieb:
int main (int argc, char *argv[]) { tiMatrix M[MAX_ORD][MAX_ORD]; // <== tiMatrix M; int g_wert; g_wert = maximum(M); return 0; }
Oder
int M[MAX_ORD][MAX_ORD]
. Bei deinem Code bekommst du eine Matrix bestehend aus 10x10 Matrizen.
-
ja also in dieser matrix ist in jedem feld 1 wert, ich hab hier nur nix eingetragen, da ich ja eig. nur die funktion schreiben muss.
heißt das, wenn in der matrix werte eingetragen sind, würde die funktion so funktionieren?
-
heißt das, wenn in der matrix werte eingetragen sind, würde die funktion so funktionieren?
Nein, wie kommst du darauf? Ich hab doch überhaupt nichts in der Richtung gesagt.
Probier doch einfach mal den Vorschlag aus.