num2str() str2num() sprintf() < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo, ich lerne gerade für eine Informatikklausur. Wir werden in der Klausur Programmieraufgaben schreiben müssen und unser Prof meinte wir sollten uns "num2str(), str2num() und sprintf()" sehr genau angucken.
eine mögliche aufgabenstellung wäre in etwa so:
1)
Es wird wird ein 10stelliger String als ISBN Nummer übergeben. Zahlen 1-9 + "X" mit dem Wert 10. Besonderheit ist noch das die Ziffern nach ihrer Reihenfolge von 10 an absteigend * genommen werden. Hier ein Beispiel:
ISBN: "372849379X"
Dann soll das Programm folgendes rechnen: 3*10+7*9+2*8+8*7+4*6.... etc. für X = 10 Falls die Summe die dort rauskommt ohne Rest durch 11 teilbar ist soll das Programm eine "1" ausgeben, sonst eine 0, dafür ist der "mod-befehl" zu nutzen.
ich habe mal probiert das zu lösen, aber bin mir da total unsicher, vll kann da mal jemand drüber sehen und es bissl verbessern :)
summe=0
a=10 (Hilfszähler)
for i=1:10
if isbn(i) == 'x'
summe=summe+10*a
else
summe=summe+str2num(isbn(i))*a
end
a=a-1
end
if mod(summe:11)==0
ausgabe=1
else
ausgabe=0
end
dann habe ich mich noch mit einer zweiten aufgabe beschäftigt:
2)
Es werden Messwerte in einem Vektor [123,32 143,54 etc.] übergeben
Die Messwerte sollen ausgegeben werden, ABER nur die Werte, welche höher als der Mittelwert sind.
ich habe nun erstmal versucht summe und mittelwert zu bilden:
mittelwert=0
summe=0
for i=1:lenght(vektor)
summe=summe+vektor(i)
end
mittelwert=summe/lenght(vektor)
und die ausgabe würde dann vll so aussehen:
b=0
for x=1:lenght(vektor)
if vektor(x) > mittelwert
sprintf('Messwert Nr. %6.2f %6.2f Nm' , b, vektor(x) )
end
b=b+1
end
also ich muss dazu sagen, nächste woche ist leider schon die klausur und meine infokenntnisse sind mies.. wäre nett wenn mir mal jemand auf die sprünge helfen kann :)
vielen dank schon mal, schönen abend noch
|
|
|
|
die erste Aufgabe habe ich sehr überarbeitet:
function ok=ISBNcode(ISBN)
Summe=0; %Hilfszähler Summe
n=1; %Hilfszähler n
for i=10:-1:1 %Schrittweite beginnend bei 10, in 1er Schritten bis 1
if ISBN(n)=='X' %Wenn die aktuelle Position der ISBN der Ziffer"X" entspricht,
Summe=Summe+i*10; %dann rechne: 0=0+Schrittposition mal 10
else %wenn nicht
Summe=Summe+str2num(ISBN(n))*i; %dann: 0=0+die Zahl der n-ten ISBN-Position mal i
end %Vorgang beendet
n=n+1; %hier erhöhen wir die ISBN-Position um eine Position
end
if mod(Summe,11)==0 %wenn die errechnete Summe durch 11 teilbar ist
ok=1; %dann gebe die Zahl "1" aus
else %wenn nicht
ok=0; %dann gebe die Zahl "0" aus
end
bekomme es im Matlab aber immer noch nicht zum laufen, ich glaube hier ist irgendwas falsch:
if ISBN(n)=='X'
??
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:20 Mo 30.03.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:20 Sa 28.03.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|