davidik
Anmeldungsdatum: 20. November 2014
Beiträge: Zähle...
|
Sehr geehrte Perl Nutzer und Versteher, Ich mag diese Programmiersprache nur leider weiß ich zu wenig davon und wollte fragen wie so Grundlagen funktionieren wie etwa Einlesen, Zählen, Addieren etc. funktioniert ich habe ein paar Beispiele Ich würde gerne eine .dat datei erstellen, bei welcher 20 Zeilen mit jeweils 100 Ziffern enthalten sein sollen.
Ich will mit dieser .dat Datei folgendes anstellen - den Inahlt der Datei einlesen und jede einzelne Zeile die Summe bilden für alle 100 Zahlen - Das Ergebnis soll im Terminal folgendermaßen ausgegeben werden
→ Summe Zeile 1: ... Summe Zeile 2: etc. - Einen Test für die Subroutine schreiben, welche 2 Durchführungen ausführt bzw. automatisch mir diese Operation berechnet - Die Zählsubroutine+Test soll so verändert werden das statt der einfachen Summe die alternierende Summe jeder Zeile gebildet wird,sprich : alternierende Summe von 19423 ist 5 = 1+9-4+2-3=5 wichtig ist hierbei das ich verstehe wie die subroutine so im großen und ganzen funktioniert mfg David
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Klingt irgend wie nach Hausaufgaben... ❗ Was hast Du denn schon so probiert? Mal ehrlich: Das klingt alles *sehr* trivial und sollte auch von einem Anfänger zu lösen sein. Man muss sich natürlich bemühen 😉
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
Naja also erstmal will ich eine Datei mit Zeichen erstellen können wie Buchstaben oder Zahlen
also 5 Ziffern pro 20 Zeilen wie in der Aufgabe lautet und diese dann als .dat speichern
dann weiß ich nicht wie einlesen geht also READ( und was kommt dann und wie funktioniert das mit dem Zeilenumbruch chomp nochmal ?
und ja dann weiß ich garnicht mehr wie addition geht also ich addiere doch nicht alle 100$ miteinander sondern Zeile für Zeile damit ich ja die Summe dann anschließend habe ebenso wie bei alternierende Summe
und für Testdurchläufe habe ich garkeine Ahnung sowas ähnliches wollte ich mit der fibonacci-Berechnung von Zahlen iterativ,rekursiv und vor allem Dynamisch programmieren, dabei brauche ich aber nochmehr Hilfe
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
davidik schrieb: Sehr geehrte Perl Nutzer und Versteher, Ich mag diese Programmiersprache nur leider weiß ich zu wenig davon
Ich schreibe normalerweise weder selbst Skripte in Perl noch kann ich von mir behaupten, dass ich alle Feinheiten der Sprache verstehe (meistens habe ich das zweifenhafte Vergnügen fehlerhafte Perl-Skripte durchzusehen und zu fixen oder zu ersetzen), aber wie kann man behaupten, dass man eine Sprache mag, wenn man nicht mal die grundlegende Syntax kennt? und wollte fragen wie so Grundlagen funktionieren wie etwa Einlesen, Zählen, Addieren etc. funktioniert
Die Dokumentation und eine Einführung in Perl, die das behandelt, ist doch sehr einfach zu finden:
http://perldoc.perl.org/perlintro.html
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
Bei mir hat es schon gescheitert beim anlegen mit mkdir auf Schreibtisch ich habe danach eine Leerzeile also dieses ">" Zeichen und ja weiß dann nicht was ich machen soll
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Hast du eventuell mkidir einen Pfad mit führendem Anführungszeichen übergeben und das abschließende Anführungszeichen vergessen? Also z.B. so:
| mkdir "/home/user/Schreibtisch/perl
|
statt
| mkdir "/home/user/Schreibtisch/perl"
|
Das kann natürlich auch mit anderen Zeichen passieren, die die Shell besonders interpretiert, in dem Fall würde ich http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ als Lektüre empfehlen.
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
@seahawk ich habe vor ein paar Jahren mit einer etwas anderen Version gearbeitet und irgendwie kommt es mir jetzt etwas Anders vor als damals, also ich habe die Befehle alle wieder vergessen und brauche meine Zeit ehe ich mich wiedereinfinde und deshalb stelle ich auch solche Fragen damit bei mir alles Idiotensicher klappt !
Ich meine als ich früher zuerst
ls
dann
cd Schreibtisch
dann
mkdir Perldokumente
dann
chmod u+x
gemacht habe alles keine Anführungszeichen benötigt hat
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Ja, das sollte eigentlich ohne Anführungszeichen funktionieren.
Aber den ">" Promt von der Bash bekommt man normalerweise, wenn sie eine mehrzeilige Eingabe erwartet, weil die vorangegangene Zeile syntaktisch nicht abgeschlossen wurde.
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
ja ok ich verstehe ☺
aber ich habe die befehle genauso halt eingetippt und das nächste was ich dann gemacht hätte wäre
gedit perl.pl
das akzeptiert der ja nicht und was kann man da nun tun wenn sowas kommt
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
lol es funktioniert !
also
hat er alles gerade ganz normal ausgeführt also manchmal bin ich entweder unaufmerksam oder ich bin zu dumm um den Fehler zu Sehen
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
davidik schrieb: lol es funktioniert !
also
Das ist aber ganz was anderes als weil es im aktuellen Verzeichnis die beiden Ordner "perl" und "dokumente" erzeugt.
Den Sinn von diesem Befehl verstehe ich auch nicht, denn normalerweise hat dein User sowieso Ausführungsrechte für die angelegten Ordner, sonst dürfte er weder reinschauen noch Dateien darin anlegen.
hat er alles gerade ganz normal ausgeführt also manchmal bin ich entweder unaufmerksam oder ich bin zu dumm um den Fehler zu Sehen
Du scheinst gerne ein bisschen ungenau zu formulieren, in dem ersten Post hast du auch erst von 100 Ziffern in einer Zeile gesprochen und ein paar Zeilen später waren es dann 100 Zahlen. davidik schrieb: ja ok ich verstehe ☺
aber ich habe die befehle genauso halt eingetippt und das nächste was ich dann gemacht hätte wäre
gedit perl.pl
das akzeptiert der ja nicht und was kann man da nun tun wenn sowas kommt
Abgesehen davon, dass der Dateiname nicht besonders hilfreich ist zu beschreiben, was die Datei enthält - Was ist denn der genaue Wortlaut der Fehlermeldung?
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
habe ich gemacht, wegen den Rechten, nur so ☺
tut jetzt auch nichts zur sache, das brauche ich aber halt bei
kam bei mir immer dieser ">" prompt, deshalb war ich sehr irritiert also ich wollte einfach nur einen Ordner anlegen, habe auch gemerkt das ich dann 2 angelegt habe weil ich die nicht zusammengeschrieben habe, die Namen es kam keine fehlermeldung nur der "prompt" und jetzt ist aber alles ok
aber nun gut ich habe wieder etwas mehr Gefühl in der Sache gekriegt
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Tippst du die Befehle eigentlich selbst ein oder kopierst du die aus irgendwelchen Dokumenten? Nicht dass da noch Windows-Zeilenenden oder ähnliches in der Shell landen...
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
|
davidik
(Themenstarter)
Anmeldungsdatum: 20. November 2014
Beiträge: 42
|
also wie soll ich das jetzt machen wenn ich jetzt habe :
| #!/usr/bin/perl -w -l
use strict;
use warnings;
open (100Zahlen, "100Zahlen.dat") or die $!;
my @Zahlen = <100Zahlen>;
close (100Zahlen);
|
ich will ja jede zeile dann die Summe bilden sprich dann muss ich ja eine Subroutine erstellen die eine Zeile für Zeile die Zahlen miteinander addiert also so ungefähr dann : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | sub Zeilensumme{
#!/usr/bin/perl -w -l
use strict;
use warnings;
open (100Zahlen, "100Zahlen.dat") or die $!;
my @Zahlen = <100Zahlen>;
close (100Zahlen);
chomp my$Zahlen ;
sub Zeilensumme{
my $Zeilensumme =0;
foreach $Zeilensumme(@Zahlen)
{
$summe += $$Zahlen[0]+$Zahlen[1]+$Zahlen[2];}
return $summe;
}
|
chomp für den zahlenumbruch für jede Zahl von meinem Array-Zahlen;
und $Zeilensumme ist die addition von dem String an erster,zweiter und dritter Stelle, als Vorüberlegung meine frage ist wenn ich das so mache was ist wenn ich pro zeile nur eine 1-stellige Zahl habe und er die dann auch am Ende der Zeile angeben soll also ich habe garkeine taktik oder überlegung wie es besser mit den subroutines geht würde gerne die korrekte anwendung erlernen gibt es tipps also ich weiß nicht ob ich 10 verschiedene Zeilensummen für 10 Zeilen erstellen soll oder ob das nicht noch einfacher geht mit der Summierung und falls wenn die weniger als 3 Zahlen pro Zeile sind das er die dann auch automatisch dann so ohne addition angeben soll
|