unterfordert in C ?

Ups was rede ich denn, dazu braucht man ja gar nicht unbedingt die dynamische Speicherverwaltung.

So fertich, bekomm ich jetzt einen Preis. Ich hoffe, das alle Ideen veröffentlicht werden. Bin schon gespannt.

Gruss Homer
 
Das ist meine Lösung (nicht als PM, da man da keine Dateien anhängen kann)

Gruss Homer
 

Anhänge

  • sortlong.zip
    1 KB · Aufrufe: 41
Auflösung Aufgabe1

Also leider hab ich bloß 2 Lösungen erhalten (hab sie nicht kompiliert) aber ich schreib sie trotzdem.

So die erste ist von ollek81:
Code:
# include <stdio.h> 

long zahl; 
char zahltxt[12], ausgabe[12]; 

int main() 
{ 
int i, wechsel = 1, a = 0; 
char zwi; 

printf("\nZahl bitte: "); 
scanf("%ld", &zahl); 
sprintf(zahltxt, "%ld", zahl); /*Zahl in string umwandeln*/ 
if(zahltxt[0] == '-') /*Zahl negativ?*/ 
a = 1; 
while(wechsel != 0) /* Wenn nix mehr getauscht wurde, ist er fertig!*/ 
{ 
wechsel = 0; 
for(i = a + 1; i < strlen(zahltxt); i++) /*Zahlen sortieren*/ 
{ 
zwi = zahltxt[i-1]; 
if(zahltxt[i] < zwi) 
{ 
zahltxt[i-1] = zahltxt[i]; 
zahltxt[i] = zwi; 
wechsel += 1; 
} 
} 
} 

printf("\nDie sortierte Zahl: %s\n", zahltxt); 


return 0; 
}

Vielen Dank für deine Teilnahme.

Die Zweite kommt von Homer
Code:
#include <stdio.h>


bool isNumeric(char *zahl, int laenge);			// diese Funktion überprüft, ob es sich wirklich um eine Zahl handelt
void sortZahl(char *zahl, int laenge);		// diese Funktion sortiert die Zahl
int getLaenge(char *zahl, int arrLaenge);	// diese Funktion gibt die Tasächlichen anzahl der Ziffern zurück


void main()
{
	char zahl[11] = {0}; // 10 stellige Ganzzahl, da Long 4 Byte hat + Null-Terminator (\0)
	int echteLaenge = 0;
	printf("Bitte geben sie eine 10 stellige Ganzzahl ein\n");
	scanf("%10s",zahl); // %10s steht dafür, das die ersten 10 Stellen als Zeichenfolge gelesen werden
	flushall();		// leeren des Tastaturpuffers
	echteLaenge = getLaenge(zahl, sizeof(zahl)); // die Echte Laenge
	if( isNumeric(zahl, echteLaenge) )
	{
		printf("\nDie eingegebene Zahl:\n%s\n\n", zahl);	// Ausgabe der eingegebenen Zahl (wobei nur die 1. 10 Ziffern genommen werden
		sortZahl(zahl, echteLaenge);		// Zahl sortieren
		printf("Die sortierte Zahl:\n%s", zahl);		// Ausgabe der sortierten zahl
	}
	else
	{
		printf("\nUngueltige Eingabe");
	}

}

int getLaenge(char *zahl, int arrLaenge)
{
	int l=0;
	for(int i=0; i<arrLaenge; i++) // Schleife bis Gesamtlänge des Arrays
	{
		if(zahl[i] != 0) l++;		// wenn das Zeichen der Stelle i nicht leer ist
	}
	return l;
}

bool isNumeric(char *zahl, int laenge)
{
	bool nummer=true;
	for(int i=0; i<laenge; i++) // Schleife bis Gesamtlänge des Arrays
	{
		if(!((zahl[i]>=48)&&(zahl[i]<=57)) )
		{// wenn das zeichen nicht zwischen ASCII 48 und 57 liegt, dann ist es keine Ziffer
			nummer=false;
		}
	}
	return nummer;
}



void sortZahl(char *zahl, int laenge)
{
	//hier wir das char-Array sortiert mit Hilfe eines Bubble-Sorts

	bool sortiert = true;

	char temp; // temporäre Variable
	int zahl1, zahl2;
	while(sortiert)
	{
		int i=0;
		sortiert = false;
		while(i<(laenge-1))
		{
			zahl1 = zahl[i]-48;
			zahl2 = zahl[i+1]-48;

			if(zahl1 > zahl2)
			{
				temp = zahl[i];
				zahl[i] = zahl[i+1];
				zahl[i+1] = temp;
				sortiert = true;
			}
			i++;
		}
		laenge--;
	}
}
Auch dir vielen Dank, ich find es echt super von euch, dass ihr euch so für die anderen members einsetzt.

Zu der Lösung von ollek81

Du hast die einfachste Lösung von diesen beiden Geschrieben super!! (zumal du ja selbst noch Anfänger bist).

Homer du hast einen etwas umfangreicheren Weg gewählt aber ich (und sicher die anderen member auch) find es gut dass du auch umfangreicher kommentiert hast.

Na gut mein Lösungsvorsclag wäre ja dieser Gewesen:
Code:
#include<stdio.h>

void main(void)
{
  int nullen = 0, einsen = 0, zweien = 0, dreien = 0;
  int vieren = 0, fuenfen = 0, sechsen = 0, siebenen = 0;
  int achten = 0, neunen =0;
  int i;
  long zahl;

  printf("Bitte eine Zahl :   ");
  scanf("%ld", &zahl);
  do
  {
  switch ((int)(zahl % 10)){
  case 0: nullen++; break;
  case 1: einsen++; break;
  case 2: zweien++; break;
  case 3: dreien++; break;
  case 4: vieren++; break;
  case 5: fuenfen++; break;
  case 6: sechsen++; break;
  case 7: siebenen++; break;
  case 8: achten++; break;
  case 9: neunen++; break;
  }
{ while (zahl /=10);
for (i=l; i <= nullen:       i++) printf("0");
for (i=l; i <= einsen:      i++) printf("1");
for (i=l; i <= zweien:    i++) printf("2");
for (i=l; i <= dreien:      i++) printf("3");
for (i=l; i <= vieren:      i++) printf("4");
for (i=l; i <= fuenfen:   i++) printf("5");
for (i=l; i <= sechsen:  i++) printf("6");
for (i=l; i <= siebenen: i++) printf("7");
for (i=l; i <= achten:     i++) printf("8");
for (i=l; i <= neunen:    i++) printf("9");
printf("\n");
}

Ok die neue Aufgabe ist noch etwas komplizierter dafür gebe ich euch aber Zeit bis Sonntag Abend. Nun gut :

Angenommen, du hast die Aufgabe, Binärdateien über eine Modemleitung zu senden. Das Problem bei der Sache ist, dass deine Binärdatei eine Datenbreite von 8 bit hat, deine Telefonstrecke aber lediglich druckbare ASCII-Zeichen (mit einem code zwischen 32 und 124) sicher übertragen kann.

Schreibe ein Programm, das deine Binärdatei so codiert, dass sie sicher über die Leitung transportiert werden können!

Heftig oder?

Viel Spaß beim Knobeln
Euer Ripper
:)
 
Zuletzt bearbeitet:
Re: Auflösung Aufgabe1

Es werden Kenntnise über

- Zeichenorientierte Ein/Ausgabe
- Formatierte Ein/ Ausgabe

benötigt.

1.Tip int GetSixBit(unsigned char *cblock, int pos)
2.Tip void WriteC6Block(unsigned char *cblock, int cnt)
 
Zuletzt bearbeitet:
Oki, mal schauen, ob die neue Aufgabe was wird, soll die Übertragung auch mit drin sein, oder nur das umwandeln der Datei?

Ich weiß noch net, ob ich mich daran machen werde, mal sehen.

Gruss Homer
 
Original geschrieben von homer
Oki, mal schauen, ob die neue Aufgabe was wird, soll die Übertragung auch mit drin sein, oder nur das umwandeln der Datei?

Ich weiß noch net, ob ich mich daran machen werde, mal sehen.

Gruss Homer

Die Übertragung muss nicht mit drin sein. Aber mal so nebenbei wäre gut wenn ihr mir eure Lösung als .cpp an meine Email-Adresse Ripper@moscowmail.com . Auf gar keinen Fall hier her posten!!! nicht wahr homer?;)
 
Zuletzt bearbeitet:
Hmm...

Da muss ich wohl passen. Das ist mir etwas zu hoch.
Außerdem ist wieder Unistress angesagt. Sorry!!!

Bin aber mal gespannt wie die Lösung zu der neuen Aufgabe aussieht...

Viel Erfolg!


MfG


ollek81
 
Original geschrieben von ollek81
Hmm...

Da muss ich wohl passen. Das ist mir etwas zu hoch.
Außerdem ist wieder Unistress angesagt. Sorry!!!

Bin aber mal gespannt wie die Lösung zu der neuen Aufgabe aussieht...

Viel Erfolg!


MfG


ollek81

Jo die nächste wird einfacher, eigentlich sollte diese wieder über Anweisungen sein.

Grutz Ripper
 
Hi!

:( Mein größtes Prob ist, dass ich nichtmal wirklich peile, was man genau machen soll. Hatte bis jetz nur 2 Semester Informatik-vorlesungen bei ner totalen Pfeife... (Ist auch nur Nebenfach...)

Wenn mir das irgendwer nochmal für doofe erklären könnte, kann ich ja evtl. mal gucken...:)




ollek81
 
Original geschrieben von ollek81
Hi!

:( Mein größtes Prob ist, dass ich nichtmal wirklich peile, was man genau machen soll. Hatte bis jetz nur 2 Semester Informatik-vorlesungen bei ner totalen Pfeife... (Ist auch nur Nebenfach...)

Wenn mir das irgendwer nochmal für doofe erklären könnte, kann ich ja evtl. mal gucken...:)




ollek81

also du sollst ein Programm schreiben welches 8Bit Binärdateien so umwandelt das sie über eine Telefonstrecke die lediglich druckbare ASCII-Zeichen (mit einem code zwischen 32 und 124)sicher übertragen kann. Also nur das programm zum umwandeln der Datei
 

Neue Beiträge

Zurück