URL: https://www.overclockers.at/coding-stuff/hilfe_bei_proggi_in_c_bitte_schnell_70119/page_1 - zur Vollversion wechseln!
Bitte lacht mich nicht aus, aber ich steck grad in folgendem Programm fest:
Schreiben Sie ein Programm, das eine Zahl n und eine Folge a von Buchstaben einliest. Die ersten n verschiedenen Zeichen der Folge sollen ausgegeben werden. Sind nicht genügend verschiedene Zeichen vorhanden, so ist eine entsprechende Meldung auszugeben.
Code:#include <stdio.h> void main(void) { char z[300]; int maxwert=13, i=0, x, a, y, n, g=1; printf("\nBitte geben sie beliebig viele Zeichen!"); scanf("\n%s", &z); printf("Bitte geben sie ein wieviele Zeichen ausgegeben werden sollen."); scanf("%d", &y); n=y; char v[n]; if ((y>maxwert)||(y<0)) { printf("Die Zahl ist größer als die Anzahl der eingegebennen Zahlen, oder kleiner als 0!"); } maxwert=y; v[0]=z[0]; for(i=0;i<=y;i++) { for(x=0;x<=y;x++) { if(z[i]==v[x]) { break; } else{ v[g]=z[i]; g++; } } } printf("Die ersten %d Zeichen lauten: ", y); for(i=0;i<=g;i++) { printf("%c", v[i]); } }
ich schreibs grad neu und dann poste ich es hier rein, ok?
Ja, is ok!
Danke!
Code:#include <stdio.h> #define ARRLEN 300 // fügst halt ein was du willst void main() { char str[ARRLEN]; int i=0,max=ARRLEN+1; for(i=0;i<ARRLEN;i++); str[i]='\0'; // initalisierung des strings printf("Gib die Einzulesende Zeichenfolge ein:\n"); scanf("%s",&str); printf("Bitte gib die Anzahl der Zeichen ein die du Einlesen willst:\n"); scanf("%d",&max); for(i=0;(i<ARRLEN && str[i]!='\0')&&i!=max;i++) printf("\nElement Nr.%d ist %c",i+1,str[i]); if(i<ARRLEN && str[i]=='\0') printf("\n\nERROR: Zuwening Zeichen vorhanden"); } // main
Was auf den ersten Blick gleich nicht funzt ist :
Auf jedenfall dynamisch anlegen :Code:[b]char v[n];[/b] // n muss ein konstanter Wert sein
Was ich noch machen würde : vergib etwas mehrsagendere Variablennamen - Google : Ungarische NotationCode:[b]char * v = new char[n];[/b] //dynamisch angelegt
in pascal is a string auch nicht dyn. sondern hat std. mäßig 256 chars
wie schreibst du das dyn. an? so haben wir das nie gemacht...
Thx Luki, das Problem ist nur, es funzt ned so richtig!?
Wenn ich aaceccggcegi und dann 5 eingebe sollte er acegi ausgeben, er gibt aber aacec aus?
[edit] Thx auch dir ViVo!
Stimmt ... kann man lassen ...
Wennst es dynamisch anlegst könntest eben soviel Zeichen wie du willst eingeben ...
Aber ich würd trotzdem besser auf die Aufgabenstellung schaun :
Er will die verschiedenen Zeichen ausgeben, und nicht die Folge der ersten Zeichen ...
jo, ähm das Problem besteht weiterhin.
Mir wär jede Hilfe recht!
Kann mir bitte endlich mal jemand helfen????
Ich werd langsam narrisch mit dem blöden Programm!
Ihr wissts doch e alle wie man des coded. Plz. helfts ma, sollte auch noch Ch lernen ):
sei mir nicht böse, aber du darfst nicht erwarten, das wir dir das fertig coden. wennst arge probs im fach c hast, dann frag deinen lehrer ob er dir evtl. helfen kann, denn fertige übungen helfen dir dabei nicht.
wenn ich noch zeit hab schau ich ob ich dir noch was schreiben kann, will aber nichts versprechen
wir reden von C also mit malloc speicher reservieren und nicht mit new
so schwer ist das doch nicht. unter anderem verwende aber nicht scanf zum einlesen. buffer overflow lässt grüßen
und ich dachte schon ich sei total verblödet und wir habens umständlich gelernt
Ich verlang nicht, das ihr mirs fertigcoded, ich weis ja nur nicht, wie ich den Teil "umschreiben" soll, dass er nur das in den 2. string einliest, was er dann auch ausgeben soll, das ist meine einziges Problem
edit:
der Teil macht mich wahnsinnig:
Code:for(x=0;x<=y;x++) { if(z[i]==v[x]) { break; } else{ v[g]=z[i]; g++; } }
ZitatEs soll wenn man aaceccggcegi eingibt und dann 5 drückt acegi ausgeben.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025