Welche Programmiersprache...

B

boehme

Registriert
Thread Starter
Dabei seit
14.02.2005
Beiträge
3
Reaktionspunkte
0
hallo,

ich möchte gern ein kleines Programm erstellen und da ich vom progammieren noch keine große ahnung habe braüchte ich eure hilfe.

ich würde gern ein programm schreiben, was mir ausrechnen kann, wie sich die hinzugabe von elementen zu einem standard mit bekannter zusammensetzung auf dessen end zusammensetzung auswirkt.

mal ein beispiel zum verständnis:

ich habe einen standard mit (wt %): Si 40%, Al 15%, Fe 30%, Cu 15%
ich möchte am ende 100g des neuen standards haben (also die % oben durch g ersetzen)
wenn ich jetzt z.B. im Endprodukt ca. 30% Cu haben will soll mir das Programm durch probierendes eingeben (in dem fall sind es ca. 18g) zeigen, wie sich meine standardzusammensetzung ändert.

also wie sieht es aus wenn ich 10g fe oder 10g cu hinzugebe. der haken dabei ist, das am ende ja nur 100g zB. herauskommen sollen:
wenn ich also 20g fe hinzugebe kann ich nur 80g standard hinzugeben.

ich habe das problem bis jetzt in einer excel tabelle gelöst, es scheint auch zu funktionieren. ich würde aber gern ein kleines programm daraus basteln, um nicht immer excel zu nutzten bzw. es eventuell systemunabhängig zu machen.

es soll also: der standard, die endmenge und meine (durch probieren) neuen elemente gegeben sein. gesucht sind die end zusammensetzung, die menge des standards und die menge der neuen elemente.

Ich hoffe ich habe es nicht zu verwirrt geschrieben. :(


Vielen Dank.

maik
 
ich glaube du solltest dir erstmal im klaren sein, was du willst! die frage ist ja, wie sollen die anteile der restlichen elemente berechnet werde? soll das verhaeltniss der alten zusammensetzung gleich bleiben? wenn du weisst, was du willst, laesst sich das in sogut wie jeder programmiersprache umsetzten, sogar excel schafft sowas.

gruss
 
Also, ich hab keine Ahnung was Du machen möchtest und welche Sprache Dir vorschwebt etc. Hier ist mal was zum Angucken, tut das das was Du meinst?

Code:
#include <stdio.h>
#include <stdlib.h>

int std[] = { 40, 15, 30, 15 };
int cst[] = { 10,  0,  0, 10 };

void mix(int *std, int *cst, int n, int res) {
        int i, cmp;
        float fak;

        for(i=cmp=0; i<n; ++i) {
                if(cst[i]) std[i] = 0;
                cmp += std[i];
                res -= cst[i];
        }
        if(!cmp) return;
        fak = ((1.0 * res)/cmp);
        for(i=0; i<n; ++i) {
                cmp = std[i] * fak;
                cst[i] += cmp;
                res -= cmp;
        }
        while(res > 0) {
                i = rand()%n;
                if(std[i] != 0) {
                        cst[rand()%n]++;
                        --res;
                }
        }
}

void out(int *tab, int n) {
        int i;

        for(i=0; i<n; ++i) {
                printf("%7c ", i+'a');
        }
        puts("");
        for(i=0; i<n; ++i) {
                printf("%7d ", tab[i]);
        }
        puts("\n");
}

int main() {
        out(std, 4);
        mix(std, cst, 4, 100);
        out(cst, 4);
        return EXIT_SUCCESS;
}

Code:
df@kittytitania test $ gcc -o std std.c
df@kittytitania test $ ./std
      a       b       c       d 
     40      15      30      15 

      a       b       c       d 
     10      27      53      10
 
niedlich! *übersgesichtstrahl*
doch, ich find den Quelltext toll... *g*
 
Wenn das ne Anspielung auf die Lesbarkeit sein soll, er hat seine Frage ja auch nicht kommentiert :D :D
 
@nonsense

ich habe einen standard und möchte den für die standartisierung eines gerätes (RFA) so anpassen, dass ich mit 10 zusammengemischten standards (standard+elemente) eine kurve zB. von 3-40% Cu aufnehmen kann. momentan steht mir nur ein standard zur verfügung und damit kann ich nicht wirklich kalibrieren, so das ich später einen großen zusammensetzungsbereich abdecken kann.

Mein Wunschprogramm wäre ich könnte die gewünschte Endkonzentration eingeben und das programm würde mir ausgeben, wieviel ich von meinem vorhandenen Standard brauche und welche Elemente ich noch hinzüfügen müsste.
Bis jetzt habe ich dafür aber keine lösung.

Mein Stand ist, dass ich eine Excel-Tabelle habe, wo ich durch probieren, mein Endprodukt nährungsweise anpassen kann. (Ich kann die Tabelle gern zum verständniss mal mailen). Probieren d.h. ich ändere die Zugaben solange ab, bis mir das Endprodukt gefällt.

Mein Plan war es diese Tabelle in ein kleines einzelnes Programm umzubauen. Ich habe aber noch keine Ahnung vom Programmieren. Als Programmierumgebung steht mir xcode zur Verfügung.

@dannycool

wo und wie kann ich deinen Quelltext in xcode einfügen?

Vielen Dank für die schnellen Antworten.
 
boehme: das ist C-Code für ein komplett lauffähiges Konsolenprogramm, d.h. Du kannst ihn sowohl mit C, mit C++ als auch mit Objective C benutzen. Zum Testen reicht es aber auch, das Ding eben als File (im Beispiel "std.c") abzulegen und mit dem gcc-Befehl im richtigen Verzeichnis zu übersetzen.
 
Du suchst nicht eine Programmiersprache, du suchst ersteinmal einen Algorithmus (Abbildungsfunktion, die aus der Eingabe die gewünschte Ausgabe erstellt). Du mußt beschreiben können, *wie* ein Programm an die Lösung kommen kann und wie es die Lösung erkennt.

Erst dann bringen Gedanken um eine Oberfläche etwas.
 
Du musst festlegen was man eingeben kann und was sich dann wie ändert. Wie Nogger schon sagte, erstmal brauchst du den Algorithmus der das alles berücksichtigt. Wenn du schon einen Excel-Tabelle hast die dir das macht dann schau dir die Algorithmen an, die du dort verwendet hast. Erst wenn man weiß was ein Program "wie" machen soll/kann sollte man sich an die Programmierung wagen.
 
Solche Sachen mache ich mit Haskell. Ist mit einpaar Zeilen Code erledigt.
 
Nogger schrieb:
Du suchst nicht eine Programmiersprache, du suchst ersteinmal einen Algorithmus (Abbildungsfunktion, die aus der Eingabe die gewünschte Ausgabe erstellt). Du mußt beschreiben können, *wie* ein Programm an die Lösung kommen kann und wie es die Lösung erkennt.

Erst dann bringen Gedanken um eine Oberfläche etwas.

Das sehe ich anders. Erstmal muss man genau beschreiben WAS ein Programm tun soll, erst dann kommt das WIE.
 
Wer lesen kann ist klar im Vorteil. konben81, lies dir nochmal Noggers Beitrag genau durch. Ich sag nur "Lösung". Jetzt bitte das Denken beginnen ;)
 
Vielen Dank für Eure Antworten ich sehe ein ich muss erst einmal üben und kann dann das Programm vieleicht schreiben.

Da habe ich gleich noch eine Frage. Ich übe derzeit in xcode mit cocoa:

Textausgaben kann ich inzwischen und auch etwas mit schleifen etc.
Wie kann ich aber ein Ergebnis aus geben? ich habe 3 Variablen definiert a,b und c -> a=10, b=2 und jetzt wollte ich c=a+b haben ich nehme an das Programm weis was ich will und rechnet mir c aus wie kann ich c aber ausgeben damit ich sehe was raus kommt?

Nochmal vielen Dank
 
Madcat schrieb:
Wer lesen kann ist klar im Vorteil. konben81, lies dir nochmal Noggers Beitrag genau durch. Ich sag nur "Lösung". Jetzt bitte das Denken beginnen ;)

Es tut mir leid wenn ich das mißverstanden haben sollte.
 
Naja, das kommt auf die Sprache an, es gibt verschiedene Möglichkeiten Text (String) oder Zahlen (zb int) auszugeben. In java ist es zB System.out.println() in PHP ist es echo (auch wenn man PHP nicht als richtige Programmiersprache werten kann). Da musst du in deiner Sprachreferenz eben nachsehen, wie man sachen am Bildschirm ausgibt.
Aso, ist cocoa ne eigentständige Programmiersprache?? Da mit in X-code nur cocoa in Verbindung mit zB Java untergekommen ist.

100. Beitrag

chrizke
 
Cocoa ist keine Programmiersprache, sondern eine Art Klassenbibliothek des Mac OS X, implementiert ist sie in der durchaus-Programmiersprache Objective C (nicht C++), und benutzt werden kann sie aus einer ganzen Reihe, z.B. Objective C, Java, C++, Python, Perl...

Wenn Du in Objective C programmierst, schreib zum Ausgeben NSLog(@"c=%d!", c).
Für Objective C oder C oder C++ kannst Du es auch mit printf("c=%d!", c) probieren. In Java ist es System.out.println("c=" + c + "!").

Der Extratext ist dafür da, dass Du beim NSLog nicht lauter komische Zeichen nacheinander hast. :p
 
Zurück
Oben Unten