Mátrixos feladatok bash szkript

Mátrixos feladatok bash szkript
2016-05-19T16:21:53+02:00
2016-05-19T19:19:42+02:00
2022-10-15T22:41:37+02:00
StellDJ2
Sziasztok!



Egy kis segítséget szeretnék kérni 

Debian 6 alatt sajnos hibásan fut le mi lehet a hiba?

Mellékátló átlaga:

#bin/bash echo "5;4;3;9 4;1;7;2 8;6;3;0 5;9;1;7" > matrix.dat cat matrix.dat | tr ";" " " sorszam=0;atlag=0; for ertek in 'cat matrix2.dat | tr ";" " "'; do [[$sorszam -eq 3 -o $sorszam -eq 6 -o $sorszam -eq 9 -o $sorszam -eq 12 ]] && atlag=$(($atlag+$ertek)) let sorszam++ done echo "Mellékátló átlaga: $atlag"




Kimenet: 5 4 3 9 4 1 7 2 8 6 3 0 5 9 1 7 3.sh: line 12: [[0: parancs nem található Mellékátló átlaga: 0






#!/bin/bash #FELADAT: 4x4 mátrix -> mellékátlóban lévő elemek átlaga 2 tizedesjegy pontosan #Létrehozom a forrásfájlt echo "5;4;3;9 4;1;7;2 8;6;3;0 5;9;1;7" > matrix8.dat; #Sorszám-segédlet # 0 1 2 3 # 4 5 6 7 # 8 9 10 11 #12 13 14 15 #Kiiratom a mátrixot hibakeresési szempontból (nem a feladat része) cat matrix8.dat | tr ";" " " #Felveszem a számláló és a atlag változókat sorszam=0; atlag=0; #Végig megy a fájlon, megcseréli a ";"-t " "-re majd az értéket egyesével átadja az $ertek-nek for ertek in `cat matrix8.dat | tr ";" " "`; do #A mellékátlóban lévő elemeket összeadom #SZINTAKTIKAILAG FIGYELJÜNK A ZÁRÓJELEK MENNYISÉGÉRE ÉS A SZÓKÖZÖKRE!!!! [[ $sorszam -eq 3 || $sorszam -eq 6 || $sorszam -eq 9 || $sorszam -eq 12 ]] && atlag=$(($atlag+$ertek)) #Növelem a sorszámot let sorszam++ done echo "Mellékátló átlaga: `echo "scale=2; ($atlag/4)" | bc`"
Mutasd a teljes hozzászólást!
Két hiba van benne, javítás:

1. -for ertek in 'cat matrix.dat | tr ";" " "'; do +for ertek in `cat matrix.dat | tr ";" " "`; do 2. -echo "Mellékátló átlaga: $atlag" +echo "Mellékátló átlaga: $((atlag/4))"
Mutasd a teljes hozzászólást!

  • [[$sorszam

    A $ elé kell egy szóköz.
    Mutasd a teljes hozzászólást!
  • Most lefut a program, sajnos az átlag értéke: 0



    #bin/bash

    echo "5;4;3;9
    4;1;7;2
    8;6;3;0
    5;9;1;7" > matrix.dat

    cat matrix.dat | tr ";" " "
    sorszam=0;atlag=0;

    for ertek in 'cat matrix.dat | tr ";" " "'; do





    [[ $sorszam -eq 3 || $sorszam -eq 6 || $sorszam -eq 9 || $sorszam -eq 12 ]] && atlag=$(( $atlag+$ertek ))
    let sorszam++
    done
    echo "Mellékátló átlaga: $atlag"
    Mutasd a teljes hozzászólást!
  • Két hiba van benne, javítás:

    1. -for ertek in 'cat matrix.dat | tr ";" " "'; do +for ertek in `cat matrix.dat | tr ";" " "`; do 2. -echo "Mellékátló átlaga: $atlag" +echo "Mellékátló átlaga: $((atlag/4))"
    Mutasd a teljes hozzászólást!
  • Bónuszként ():

    #!/bin/bash OIFS=$IFS; IFS=";"; echo "5;4;3;9;4;1;7;2;8;6;3;0;5;9;1;7" > matrix.dat n=0 #aktualis elem sorszama m=0 #atlag ertek for i in `cat matrix.dat`; do if [ $n -eq 3 -o $n -eq 6 -o $n -eq 9 -o $n -eq 12 ]; then m=$((m+i)) fi let n++ done echo "Az átló elemeinek összege: " $m IFS=$OIFS; [/codeg
    Mutasd a teljes hozzászólást!
  • Köszönöm!



    Már csak ezt a feladatot kellene megoldani.

    #!/bin/bash
    #FELADAT: 4x4 mátrix -> mellékátlóban lévő elemek átlaga 2 tizedesjegy pontosan
    #Létrehozom a forrásfájlt
    echo "5;4;3;9
    4;1;7;2
    8;6;3;0
    5;9;1;7" > matrix8.dat;
    #Sorszám-segédlet
    # 0 1 2 3
    # 4 5 6 7
    # 8 9 10 11
    #12 13 14 15
    #Kiiratom a mátrixot hibakeresési szempontból (nem a feladat része)
    cat matrix8.dat | tr ";" " "
    #Felveszem a számláló és a atlag változókat
    sorszam=0; atlag=0;
    #Végig megy a fájlon, megcseréli a ";"-t " "-re majd az értéket egyesével átadja az $ertek-nek
    for ertek in `cat matrix8.dat | tr ";" " "`; do
      #A mellékátlóban lévő elemeket összeadom
      #SZINTAKTIKAILAG FIGYELJÜNK A ZÁRÓJELEK MENNYISÉGÉRE ÉS A SZÓKÖZÖKRE!!!!
      [[ $sorszam -eq 3 || $sorszam -eq 6 || $sorszam -eq 9 || $sorszam -eq 12 ]] && atlag=$(($atlag+$ertek))
      #Növelem a sorszámot
      let sorszam++
    done
    echo "Mellékátló átlaga: `echo "scale=2; ($atlag/4)" | bc`"
    Mutasd a teljes hozzászólást!
  • echo "Mellékátló átlaga: `echo "scale=2;$atlag/4" | bc`"
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd