Programmieraufgaben C

cuddlytux

cuddlytux

Alles außer unix ist sc..
da liegt ja eigentlich mein Problem...ich hab irgendwie garkeine Aufgabe, kein Ziel das ich erreichen möchte...einfach nur so: naja C is ja eine nützliche und tolle Programmiersprache, möchte ich mal lernen...
aus http://www.unixboard.de/vb3/showthread.php?p=273760#post273760

Es gibt so viele tolle Sachen die man in C machen kann, denk dir einfach mal was lustiges aus. Eine sehr schöne Aufgabe statt Hallo Welt ist z.B. der Terminalweihnachtsbaum (sehr beliebte Schulaufgabe für die letzte Stunde vor den Weihnachtsferien):
*
***
*****
***
*****
*******
*****
*******
*********
||||
||||​

oder

Code:
Schreiben Sie ein Programm mit dem sich über [URL="http://de.wikipedia.org/wiki/SMTP"]SMTP[/URL] emails versenden lassen!
oder

Code:
1. Schreiben Sie ein Programm in C, das aus einer (My)SQL-Datenbank
 Warenbestände ausliest und eine druckbare Inventurliste in LaTeX (oder
sonstwas Druckbarem) ausspuckt!
2. Schreiben Sie ein Programm mit der sich diese Inventurliste wieder
einlesen lässt und das die Datenbank entsprechend updatet!

oder

Code:
Implementieren Sie den [URL="http://de.wikipedia.org/wiki/Advanced_Encryption_Standard"]Rijndael-Vorschlag für AES![/URL]

oder ...

Das ist jetzt zwar auch schon etwas heftigerer Stoff, aber über diese Beispiele kann man schon einiges in C lernen, was man später auch benötigt.
Wem nochwas einfällt der möge es hier posten.

Gruß

Jan
 
Zuletzt bearbeitet:
Aber du musst dafür die befehle kennen, und was sie tuen usw...

Und ich bin grad mal instande ein kleines quiz zu schreiben, ohne dauernd die befehle und syntax zu überprüfen.

Weswegen man dauernd in C - Z nachschlagen musst.

Wie ich den "Terminalweihnachtsbaum" hinkriege wüsste ich jetzt auch nicht...schon klar, mit printf, aber dann die variablen die dazu kommen wegen umbruch usw...
 
Natürlich muss man am Anfang dauernd nachschlagen, aber wenn man dann mal die eine oder andere Problemstellung so gelöst hat, hat man mehr aufm Kasten als durch 5 C a-z durchlesen.

Hier ist die Lösung für den Weihnachtsbaum, allerdings etwas verändert und in php:
Code:
<html>
<head>
<title>
Ein Weihnachtsbaum!
</title>
</head>
<body>
<form action="index.php" method="get">
<input name="stockwerke" type="text" size="5">&nbsp;"Stockwerke"<br>
<input type="submit" value="Zeichnen">
</form>

<font style="font-family: Courier;">
<center>
<?
$zapfen = 1;

for($k = 0; $k < $_GET["stockwerke"]; $k++)
{
        for($i = 0; $i < $k + 3; $i++)
        {
        for($j = 0; $j < $zapfen; $j++) { echo("X");}
        echo("<br>\n");
        $zapfen += 2;
        }
        $zapfen -= 4 + $k * 2;
}

for($l = 0; $l < $_GET["stockwerke"]; $l++)
{
        for($m = 0; $m < $_GET["stockwerke"]; $m++)
        {
        echo("|");
        }
echo("<br>\n");
}

?>
</center>
</font>
</body>
</html>

Es gibt auch noch die Möglichkeit den ganzen Baum in eine einzige Schleife zu packen, wie weiß ich allerdings nicht mehr...

P.S.: Diese Aufgaben sollte man nur mit Erfahrung in anderen Sprachen verwenden, sonst ist das wirklich zu heftig (also ausgenommen der Weihnachtsbaum).
 
P.S.: Diese Aufgaben sollte man nur mit Erfahrung in anderen Sprachen verwenden, sonst ist das wirklich zu heftig (also ausgenommen der Weihnachtsbaum).
Wie jetzt? doch nicht in c? xD
 
P.S.: Diese Aufgaben sollte man nur mit Erfahrung in anderen Sprachen verwenden, sonst ist das wirklich zu heftig (also ausgenommen der Weihnachtsbaum).

genau das ist ja da auch wieder mein Problem: die Aufgaben sind, für nen Anfänger als Motivation und Ziel einfach zu schwer...

Ich kann mich noch erinnern wie ich mal mit 2 Schulkollegen im Gymnasium ein bisschen Delphi gelernt hab, da sind wir von einem einfachen "Button drück -> Fläche wird Rot, Button nochmal drück -> Fläche wir grün" Programm zu nem ausgewachsenen Paint-like Programm gekommen. :)

Und irgendso etwas würde ich eben jetzt auch für C brauchen...etwas wo man schön langsam mitwachsen kann, und von nem einfachen Programm, das eigentlich nur aus Ein und Ausgaben besteht zu nem ausgewachsenen irgendwas kommt.
 
Zuletzt bearbeitet:
Zur ersten Aufgabe:
Code:
printf "     *\n";
printf "    ***\n";
printf "   *****\n";
printf "    ***\n";
printf "  *****\n";
printf " *******\n";
printf "*********\n";
printf "   ||||\n";
printf "   ||||\n";

is denke ich so einfacher, wie mit ner schleife. Vielleicht ein wenig zu Primitiv, aber egal.
 
Hi, Mike 1,
na, ich versuche ja auch C zu lernen. Dazu hatte ich hier mal nachgefragt, wer denn an einem Linux-Projekt mit einer neuen Sprache mit machen würde. Man ist hier der Meinung, daß man keine neue Sprache braucht. Stimmt ja auch. Aber damit hat man sehr viele Aufgaben, an denen man C lernen kann. Also, einen denkenden Editor schreiben ( Ein- und Ausgabe auf dem Bildschirm / Überprüfung der Syntax, wenn möglich mit Autokorrektur / Mausstuereung na - und mehr). In einem Team ist das einfach besser. Der eine übernimmt dieses der ander jenes Problem und liefert eine Lösung oder aber Fragen. Auch ne Möglichkeit zu lernen.. Warum sollte man nicht auch hingehen, und die Sprache mal in deutsch machen? Man braucht die Sprache nicht "BASIC" nennen. Warum sollte sie nicht einfach Quatsch heißen? Namen sind Schall und Rauch. Lernen ist lernen.
Ansonsten Viel Spaß

Gruß Yomm
 
Hi, Mike 1,
na, ich versuche ja auch C zu lernen. Dazu hatte ich hier mal nachgefragt, wer denn an einem Linux-Projekt mit einer neuen Sprache mit machen würde. Man ist hier der Meinung, daß man keine neue Sprache braucht. Stimmt ja auch. Aber damit hat man sehr viele Aufgaben, an denen man C lernen kann. Also, einen denkenden Editor schreiben ( Ein- und Ausgabe auf dem Bildschirm / Überprüfung der Syntax, wenn möglich mit Autokorrektur / Mausstuereung na - und mehr). In einem Team ist das einfach besser. Der eine übernimmt dieses der ander jenes Problem und liefert eine Lösung oder aber Fragen. Auch ne Möglichkeit zu lernen.. Warum sollte man nicht auch hingehen, und die Sprache mal in deutsch machen? Man braucht die Sprache nicht "BASIC" nennen. Warum sollte sie nicht einfach Quatsch heißen? Namen sind Schall und Rauch. Lernen ist lernen.
Ansonsten Viel Spaß

Gruß Yomm

Yomm, kauf dran an was das "einstieg wissen" ist... sonst wär ich dabei.
 
du sprichst hier doch von einem compiler ... und compiler schreibste nimma selber

dazu benutzt man flex und bison :)

und dazu musst du dich mit automaten beschäftigen, wie eine actiotable aufgebaut ist etc.

also nen compiler schreiben an sich ist nicht schwer und man brauch nicht viel c nowHow
desweiteren schreibt kein mensch mehr einen edit also eine GUI in c ... sowas macht man in C++

ich würde euch beiden sowiso zu c++ raten und nicht zu ansi C

mfg
 
@Shorti: Deins is zwar einfach aber statisch (auf die Anzahl der Stockwerke bezogen) :))

Für dich Tomekk228 hier meine Lösung in C!
Meine Lösung

Is aber unkommentiert!
Wenns Fragen gibt, einfach melden!

Grüße
 
Nette Aufgabe
hier meine Krüppelkiefer:
Code:
tux@erymathos:~/Programmieren$ gcc -ltermcap -o tannenbaum tannenbaum.c
tannenbaum.c: In Funktion »draw_trap«:
tannenbaum.c:90: Warnung: Übergabe des Arguments 2 von »setupterm«  erzeugt Ganzzahl von Zeiger ohne Typkonvertierung
tannenbaum.c: In Funktion »draw_bottom«:
tannenbaum.c:111: Warnung: Übergabe des Arguments 2 von »setupterm«  erzeugt Ganzzahl von Zeiger ohne Typkonvertierung
tux@erymathos:~/Programmieren$ ./tannenbaum
                          *
                         ***
                        *****
                         ***
                        *****
                       *******
                        *****
                       *******
                      *********
                         |||
                         |||
Sourcecode
 
Zuletzt bearbeitet:
Ich hatte auch das Problem , das ich zwar C lernen wollte, allerdings keine echte Motivitation.
Ich habe die Aufgaben des Bundeswettberbs Informatik bearbeitet. Auch wenn mich am Schluss keine Einsendung hatte habe ich gelernt wie man Programme schreibt und entwirft. Wenn du noch Schüler bist bzw noch keine Ausbildung/Stdium angefangen hast kannst du teilnehmen. Die Aufgaben der ersten Runde werden nach den Sommerferien veröffentlicht. Deine Schule sollte die Aufgabenstellungen und ein Plakat per Post bekommen. Wenn man die haben will muss man sich erfahrungsgemäß vorher darum kümmern ...

Bundeswettbewerb Informatik
http://www.bwinf.de

Außerdem gibt es noch die Welfenlab Competition

http://www.gdv.uni-hannover.de
 
meine lösung:
#include <gtk/gtk.h>

GtkWindow *win;
int adend(){
return FALSE;
}
void end(){
gtk_main_quit();
}




int main(int argc,char **argv){

GtkLabel *tb[11];
GtkVBox *vbox;
int i;
gtk_init(&argc,&argv);
win=g_object_new(GTK_TYPE_WINDOW,"title","O Tannenbaum","default-width",100,"default-height",100,NULL);
g_signal_connect(win,"delete-event",G_CALLBACK(adend),NULL);
g_signal_connect(win,"destroy",G_CALLBACK(end),NULL);
tb[0]=g_object_new(GTK_TYPE_LABEL,"label"," * ",NULL);
tb[1]=g_object_new(GTK_TYPE_LABEL,"label"," *** ",NULL);
tb[2]=g_object_new(GTK_TYPE_LABEL,"label"," ***** ",NULL);
tb[3]=g_object_new(GTK_TYPE_LABEL,"label"," *** ",NULL);
tb[4]=g_object_new(GTK_TYPE_LABEL,"label"," ******* ",NULL);
tb[5]=g_object_new(GTK_TYPE_LABEL,"label"," ********* ",NULL);
tb[6]=g_object_new(GTK_TYPE_LABEL,"label"," ***** ",NULL);
tb[7]=g_object_new(GTK_TYPE_LABEL,"label"," ********* ",NULL);
tb[8]=g_object_new(GTK_TYPE_LABEL,"label","***********",NULL);
tb[9]=g_object_new(GTK_TYPE_LABEL,"label"," ||| ",NULL);
tb[10]=g_object_new(GTK_TYPE_LABEL,"label"," ||| ",NULL);
vbox=g_object_new(GTK_TYPE_VBOX,NULL);
gtk_container_add(win,vbox);
for(i=0;i<11;i++){
gtk_box_pack_start_defaults(vbox,tb);
}
gtk_widget_show_all(win);
gtk_main();
return 0;
}
 
Zuletzt bearbeitet:
Jau, C wollte ich auch immer lernen. Schlaue Buecher giebt es ja. Man muss sie nur verstehen. Denn gerade dass, was man braucht, steht nicht drinn.
Da habe ich mal so ein Prograemmchen geschrieben, was sich mit Bruchzahlen beschaeftigt. Nun, ich lebe hier in Thailand. An das Zehnersystem hat man sich nicht gewoehnt ( will man nicht ). Mit Bruechen rechnen koennen Thasis auch nicht. Na, ich ab mir mal den Spass gemacht - so fuer mich - Brueche (gemischte ) in Dezimalzahlen um zu rechnen. Aber auch umgekehrt, Dezimalzahlen in Bruechen um zu rechnen ( das ist viel schwieriger ). Einige Schleifenbefehlem scheinen unter C nicht zu funtionieren. Genauso habe ich Probleme, ueber Tastensteuerung den Programmverlauf zu steuern. Ein Char- Speicher sollte nur ein Zeichen beinhalten. Der hat aber ein ganzes Buch in sich. Die eingabe ist also immer unterschiedlich von der Abfrage. Somit funtioniert nichts mit Steuerung.
Ich hatte schonmal angeregt, eine neue Sprache zu entwickeln. Fuer jene wie mich, die nicht Naechte lang vor dem Rechner sitzen wollen, weil diewses oder jenes nicht funktioniert. Gelaechter habe ich bekommen. Aber auch das waere eine Aufgabe. Einen Quelltext mit beliebigen verstaendlichen Worten schreiben. Anschliessend in den C - Befehlen uebersetzen und weiter wie ein normales C-Programm zu compilieren. So eine Aufgabe dauert laenger. Schliesslich braucht man dazu eine Menge Unterprogramme wie Editor, Syntaxpruefung, Debuger (es ist sinnvoll, ein Programm vor dem Uebersetzen pruefen zu koennen.), Hilfe und und und. In den C-Buechern habe ich eine einfache Bildschirmhandhabung bis jetzt nicht beschrieben bekommen. Wird warscheinlich ueber eine Tourow (oder so aehnlich) maschine machbar sein. Dazu muss man aber die Bildschirmkarte ansprechen koennen. Zu lernen gibt es da viel. Sinnvoll ist es aber auch, ein solches im Teamwork zu erledigen. Auch wenn sich das Projekt sehr umfangreich anhoert, es ist in kleinen Schritten machbar.
Eine simple aber sichere Sprache kann sehr nutzvoll auch fuer die Entwicklung von Linuxprogrammen sein. Wer sagt denn, das jemand, der kein C kann nicht denken kann.
Es nervt aber, wenn da so ein kleiner Fehler zu stundenlanger Suche fuehrt.
Was ich nie verstanden habe, wieso C-Programmierer ihre Programme auf einen Editor (EMAC, VIE) schreiben, ihn uebersetzen und dann bei Fehler wieder von vorne anfangen.
Kann ja mal jeder drueber nachdenken. Ich mache mit. Ueber E-Mail sollte es moeglich sein, sich zu verstaendigen. Auch wenn ich etwa 10 000 km von Euch entfernt bin.
Gruss
Yomm
 
Zum Verständnis du willst einen neuen Compiler schreiben, der dann auf basis des gcc compeliert?

Wenn das zutrifft, wirst du leider bevor du eine (in deinen augen einfache sprache) entwickeln kannst noch viel mehr in die materie c / c++ einsteigen :>

denn so etwas macht man mit hilfe von flex und bison. Das sind tools um compiler zu bauen... die syntaxüberprüfung(flex) ist nicht all zu schwer zu implementieren, doch dann der baum der erzeugt werden muss um die semantik zu überprüfen ist schon etwas schwieriger :>

greetz
 
@shorti: Aber der is schon ein beeten scheef
 
Ich hatte schonmal angeregt, eine neue Sprache zu entwickeln.

Dann hast du halt nicht anständig gesucht, bzw. nicht länger als 5 Minuten.

Es gibt bereits Hunderte, wenn nicht gar Tausende Sprachen, und da ist bestimmt auch eine dabei mit der du klar kommst.

Python ist z.B. ein unglaublich schöne Sprache, die exzellent dokumentiert ist, und für den Anfänger extrem leicht zu lernen.

Ich würde also erst mal nach Alternativen suchen, die gibt es wie Sand am Meer.
 

Ähnliche Themen

Aufgabe in C

Mike will C/C++ lernen, nur: wie angehn?

Aufwand der Programmierung für eine solche Anwendung

C++ Klausur durchgefallen

Zurück
Oben