Zum Inhalt springen

RandyK

Mitglieder
  • Gesamte Inhalte

    17
  • Benutzer seit

  • Letzter Besuch

  1. woa vielen vielen Dank für die Lösung! Die Abgabe ist seit heute vorbei und irgendwie war bis vor kurzem der Server down :upps aber jetzt hab ich wenigstens mal kapiert, wie das funktioniert... mein Ansatz war tatsächlich nicht so schlecht wie ich dachte. War wirklich wichtig, weil ich schreib nächste woche Klausur also danke nochmal Gruß Randy
  2. Hallo, Klotzkopp Danke für die Antwort! Also das mit sizeof und strlen war mir neu... gut zu wissen! nur komme ich mit der anwendung irgendwie nicht ganz klar. ich hab den code jetzt mal umgeschrieben, er funktioniert aber leider immernoch nicht. pointer machen mich langsam verrückt :eek kannst du mir vllt genauer erklären, was ich falsch mache? #include <stdio.h> #include <stdlib.h> char *cat(char *string[], int anzahl){ int i, length = 0; char*res; for(i=0;i<anzahl;i++) length = length + strlen(**string++); res = malloc(length*sizeof(char)); if(res == NULL) return NULL; for(i=2;i<length;i++) *res = strcat(**string,**string++); res = string; return res; } main(int argc, char *argv[]) { int anzahl = argc-1; printf("%s",*cat(argv,anzahl)); getchar(); } irgendwo muss ich ja nen grundlegenden denkfehler haben... ich komm auf zeiger irgendwie noch nicht ganz klar. Danke im Vorraus! Grüße Randy
  3. Hi leute, hab folgendes Problem: Schreiben Sie ein Programm, dem Sie zwei oder mehr Zeichenketten als Kommandozeilenparameter übergeben können, und das diese dann aneinandergehängt ausgibt. Führen Sie eine Kontrolle der Anzahl der übergebenen Kommandozeilenparameter durch. Das Aneinanderhängen von zwei oder mehr Zeichenketten realisieren Sie durch eine Funktion mit dem Prototypen char * cat(char * string[], int anzahl), der Sie bei Aufruf ein Feld string von Zeichenketten der Länge anzahl übergeben. Diese Funktion soll einen Zeiger auf die Ergebniszeichenkette, welche sich aus allen Komponenten von string zusammensetzt, zurückgeben. Dazu müssen Sie im Funktionsrumpf dynamisch ausreichend Speicherplatz reservieren. Vergessen Sie die Speicherfreigabe am Ende des Programms nicht. Sie dürfen die Bibliotheksfunktionen strlen und strcat verwenden. Und ich check nix davon.... ich kann mit den verfluchten Pointern einfach ums verrecken nicht umgehen und hab nich die geringste ahnung, wie ich das anstellen soll... hier meine kläglichen bisherigen versuche: #include <stdio.h> #include <stdlib.h> char * cat(char * string[], int anzahl){ char *ergebnis; int i; ergebnis = malloc(sizeof(string)); for(i=1;i<anzahl;i++){ strcat(string[0],string[i]); } *ergebnis = string; return ergebnis; } main(int argc, char* argv[]) { int anzahl = argc-1; printf("%s", *cat(argv,anzahl)); } wobei sich das ding nichmal kompilieren lässt... weiß echt überhaupt nich weiter... :confused: ich hoff mir kann iwer helfen. Grüße Randy
  4. Danke für die Antworten... wie kann man denn bei c eine zufallszahl aus einem intervall wählen lassen? mfg Randy
  5. ok, sorry jetz bin ichs nochmal... hätt ich fast vergessen: hat von euch einer ne ahnung, wie ich die jetzt noch nichtdeterministisch machen kann? Wär für jeden ratschlag dankbar. ach ja, oben muss an die funktion als re a/2 übergeben werden und nicht a.... sonst funktionierts iwie nich... grüße Randy
  6. ok, danke jetz hab ichs... #include <stdio.h> double wurzel(double li,double re,int a) { double y; y = (li+re)/2; if(li>=re-0.000001) {return y;} if(y*y<a) {return wurzel(y,re,a);} if(y*y>a) {return wurzel(li,y,a);} } int main() { int a; double b; printf("bitte positive ganze zahl eingeben:\n"); scanf("%i",&a); b = wurzel(1,a,a); printf("%.4f",; return 0; }[/code] Also, vielen Dank an alle Beteiligten und bis bald! Grüße Randy
  7. stimmt ja, da hast du recht..... hab allerdings festestellt, dass wenn ich li nicht mit 1 initialisiere, funktioniert der code zwar soweit, aber nich für quadrate von 16 und vielfachen, also 256, 1024, etc... keine ahnung warum.... also eigentlich hatte ich bisher keine probleme bei rekursion (Euklid, Fakultät, etc), allerdings ist ja diesmal der prototyp int wurzel(int a). Und ich hab keine ahnung wie ich die funktion mit manipuliertem li und re aufrufen kann... danke im voraus Randy
  8. Okay ne, der Code von vorhin war viel zu ineffizient.... so ist es besser: double wurzel(int a) { double li, re = a, y; while(li<re-0.000001) { y = (li+re)/2; if(y*y<a) {li=y;} if(y*y>a) {re=y;} } return y; } meine frage ist aber immernoch die gleiche grüße Randy
  9. Hallo Leute, Wir haben die Aufgabe bekommen, eine kleine Funktion in C zu implementieren, die mittels Intervall-Schachtelung die Wurzel einer ganzen positiven Zahl berechnet. Dies soll in 4 Versionen geschehen: eine rekursiv deterministisch, eine rekursiv nichtdeterministisch, eine iterativ deterministisch und eine iterativ nichtdeterministisch. Die iterativ deterministische ist kein Problem, allerdings hab ich nich die geringste vorstellung, wie ich die Funktion nichtdeterministisch und vor allem rekursiv darstellenn soll. Mein bisheriger Code sieht so aus: double wurzel(int a) { double li = 1.0, re = a, y; while(li<re) { y = (li+re)/2; if(y*y<a) {li=li+0.0001;} if(y*y>a) {re=re-0.0001;} } return y; } Ich würde mich freuen, wenn mir jemand helfen könnte! Liebe Grüße Randy
  10. okay, vielen Dank für die Tipps, ich glaub jetz hab ichs hingekriegt... deine Tipps, waren Gold wert, sonst hätt ich ja alles falsch gemacht^^ wieder einiges gelernt! Auch danke an ale anderen #include <stdio.h> main() { char c,d='0'; double value=0,value2=0,e,result; int i=0,j,k=1; c=getchar(); if(c=='\n') { printf("Keine Eingabe!\n"); return 0; } if(c=='+') { d='+'; c=getchar(); } if(c=='-') { d='-'; c=getchar(); } if(c<48||c>57) { printf("Ungueltige Eingabe!\n"); return 0; } if(c=='0') { c=getchar(); if(c>'0'&&c<='9') { printf("die Erste Ziffer darf keine Null sein!\n"); return 0; } } while(c>47&&c<58) { value=value*10+(c-'0'); c=getchar(); } if(c=='.') { c=getchar(); while(c>47&&c<58) { value2=value2*10+(c-'0'); c=getchar(); i++; } } for(j=0;j<i;j++) {k=k*10;} value2=value2/k; result=value+value2; printf("%lf",result); return 0; } EDIT: Ach ja, aber was if-else-Kaskaden sind, würde mich trotzdem interessieren... Gruß Randy
  11. okay, also dass ich nicht auf return komme ist schon komisch^^ , oder? aber was meinst du mit if-else-kaskaden? tjo und wie lässt sich das mit dem nachkommateil bewerkstelligen?
  12. jo, richtig, einen int für die vorkommastellen, einen für die danach... ausgabe is dann "%i.%i" also einfach mit punkt zwischen den integern. Funktioniert einwandfrei. Wieso ist die schleife überflüssig, gibts noch eine andere möglichkeit bei if-abfragen das programm zu beenden, als den break befehl in ner endlosschleife?
  13. danke für den Tipp!!! Code is jetz fertig... #include <stdio.h> main() { char c,d='0'; int value=0,value2=0,e; while(1) { c=getchar(); if(c=='\n') { printf("Keine Eingabe!\n"); break; } if(c=='+') { d='+'; c=getchar(); } if(c=='-') { d='-'; c=getchar(); } if(c<48||c>57) { printf("Ungueltige Eingabe!\n"); break; } if(c=='0') { c=getchar(); if(c>'0'&&c<='9') { printf("die Erste Zahl darf keine Null sein!\n"); break; } } while(1) { while(c>47&&c<58) { value=value*10+(c-'0'); c=getchar(); } if(c=='.') { c=getchar(); while(c>47&&c<58) { value2=value2*10+(c-'0'); c=getchar(); } } break; } if(d!='0') {printf("%c%i.%i\n",d,value,value2);} else {printf("%i.%i\n",value,value2);} break; } } bis bald Randy
  14. ja, schon klar... mein Hauptproblem war ja überhaupt zeichenketten mit getchar() einzulesen... habs jetz hinbekommen. Der Code sieht so aus: #include <stdio.h> main() { char c,d='0'; int value=0,value2=0,e=1; while(1) { c=getchar(); if(c=='\n') { printf("Keine Eingabe!\n"); break; } if(c=='+') { d='+'; c=getchar(); } if(c=='-') { d='-'; c=getchar(); } if(c<48||c>57) { printf("Ungueltige Eingabe!\n"); break; } while(1) { while(c>47&&c<58) { value=value*10+(c-'0'); c=getchar(); } if(c=='.') { c=getchar(); while(c>47&&c<58) { value2=value2*10+(c-'0'); c=getchar(); } } break; } if(d!='0'){printf("%c%i.%i\n",d,value,value2);} else {printf("%i.%i\n",value,value2);} break; } } allerdings krieg ich die Abfrage ob die erste Stelle ne null is nich hin... wenn man nur eine Null eingibt, soll es 0.0 ausgeben. Wenn aber nach der Null noch eine andere Zahl kommt, solls eine Fehlermeldung ausspucken. Aber das is das einzige, was dann noch fehlt... Beispiel: Eingabe:0, Ausgabe:0.0, Eingabe:01.9, Ausgabe:Fehlermeldung Gruß Randy
  15. ok, sorry.... habs grad hinbekommen. #include <stdio.h> main() { char c; int value=0; while(1) { c=getchar(); if(c!='\n') { value=value*10+(c-'0'); } else {break;} } printf("%i",value); }

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...