Kezdőoldal » Számítástechnika » Programozás » Hol vannak hibák a linken...

Hol vannak hibák a linken található feladatra készített megoldásban?

Figyelt kérdés

[link]


#!/usr/bin/perl -w

use strict;

sub LoadData {

open (CSV, "termek.csv")

or die "nem található a fájl";

my @sorok;

my $i=0;

my $j=0;

while (<CSV>){

chomp;

my @sor = split /;/;

if (defined $sor[1]){

@sor = split /;/ ,$sor[1];

my @arak = split /;/,$sor[3];

if(defined $sor[0]){

$sorok [$i][0]=$sor[2];

$sorok[$i][1]=$arak[0];

$sorok [$i][2]=$sor[1];}


$i++}

}

return @sorok;

}

sub Listdata {

my @adat=@_;

my %lista;

my $i=0;


foreach(@adat){

my $kulcs = $adat[$i][0];

if (exists $lista{$kulcs}){

$lista{$kulcs}[0] += $adat[$i][1];

$lista{kulcs}[1] += 1;

}

else

$lista{$kulcs} = = ['0','0' ];

$lista{$kulcs} [0] += $adat[$i][1];

$lista{$kulcs}{1} += 1;

}

$i++

}

foreach my $kulcs(keys %lista){

$lista{$kulcs}[0] = $lista{$kulcs} [0]/

$lista{$kulcs}[1];

delete $lista{$kulcs} [1];

}

print '

Termékek átlag szerinti sorrendje:

<!DOCTYPE XHTML>

<html>

<head>

</head>

<body>

<table border=1>

<tr>

<td>Termék</td> <td>Átlagos eladási ár</td>

<tr>'."\n";

foreach my $kulcs (sort {$lista{$a}[0] <=>

$lista{$b}[0]} keys %lista){

printf ("\t<tr>\n\t\t<td align='center'>

%s</td><td align='right'>%.2f</td>\n\t</tr>\n",

$kulcs,$lista{$kulcs}[0]);

}

print "</table>\n</body>\n</html>\n";

}

sub MaxMonth {

my @adat=@_;

my %lista;

my $i=0;

my $ho;

my @honap;


foreach(@adat){

my $kulcs = $adat{$i]{0];

$ho=$adat[$i][2];

@ho = split /\./,$adat[$i][2];

if ($honapos[1] <= 12){

$ho} = 1;}

$lista{$kulcs}{$ho} +=1;

$i++;

}

printf ("\nEredmény\n");

foreach my $kulcs (keys %lista){

my ($max);

my @sort;

$sort[0][0] =$lista{$kulcs}{1};$sort[0][1]=1;

my @sorted = sort { $a->[0] <=> $b->[0] @sort;

$max =$sorted[0][1];

printf ("$kulcs,$max");

}

}

my @adatok=&LoadData;

&ListData(@adatok);

&MaxMounth(@adatok);


2016. dec. 13. 20:13
 1/5 A kérdező kommentje:
2016. dec. 13. 20:15
 2/5 anonim ***** válasza:
2016. dec. 13. 21:05
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

Figyyu, ez így nem fog menni.

1. Tedd fel valami rendes kód megosztó oldalra a scripted.

2. Vedd a fáradtságot, hogy legalább leírd a feladatot, és ne egy bemozdult mobilos képet likelj.

3. Ha nem úgy működik a scripted, mint ahogy kellene, írd le, hogy hol akad le, hogy kapsz más eredményt, mint ahogy várod, illetve, ha van, mi a hibaüzenet.

2016. dec. 13. 21:28
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

1. Használj valami kódmegosztót a forráskódod közlésére.

A fényképre meg engedj rá automatikus fehéregyensúlyt (az ingyenes Gimpben is van ilyen).


2. Az előző kérdésedben ( http://www.gyakorikerdesek.hu/szamitastechnika__programozas_.. ) leírtuk, hogyan olvass be, és bonts részekre egy állományt - te megint nem úgy csinálod, ahogy azt javasoltuk.


A szétbontott részekből az 1. (dátum és idő - a 3. feladathoz), a 2. (terméknév) és 3. (ár) oszlop kell.


3. A ListData nevú függvényben a tömbből a termékneveket és árakat felhasználva készíts egy hash-t, ahol a kulcs a terméknév, az érték meg egy két elemű tömb: az első tömbelem az adott termék árának összessége a másik meg a adott termék száma.


4. Az XHTML dokumentum így kezdődik:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " [link]

<html xmlns=" [link]


A <head>-ből hiányzik a dokumentum címe:

<title>Átlagárak</title>


A táblázat kialakítására/formázására előző kérdésedben már mutattam példát:

[link]


5. A Maxmonth függvénynél a Loaddata által adott tömbből a terméknevet és a dátumot használd fel. A dátumot bontsd szét a .-tok mentén - ebből a második (a hónap) kell.


Készíts egy hash-t, ahol a kulcs a terméknév, az érték egy 12 elemű, egydimenziós, kezdetben csak nullákat tartalmazó tömb (a hónapok).

Ha az adott termékhez találsz egy hónapot, akkor annak a hónapnak az értékét megnöveled eggyel.

Tehát tegyük fel, hogy kezdetben van egy ilyened:

$monthstat('Eper') = (0,0,0,0,0,0,0,0,0,0,0,0)

és a bemeneti tömbben van egy ilyened:

('2004. 01.17 13:19','Eper',5997.35 )

akkor ugye az első oszlopból kibányászott hónap a 01, vagyis az eredmény:

$monthstat('Eper') = (1,0,0,0,0,0,0,0,0,0,0,0)


Majd a végén minden egyes terméknél végzel a tömbbön egy maximumkeresést.

2016. dec. 14. 01:16
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

@4: Hozzáfűzök a válaszodhoz egy apróságot, ami megmutatja, hogy miért szeretem annyira a perl-t:


"$monthstat('Eper') = (0,0,0,0,0,0,0,0,0,0,0,0) "

Nagyon jó a perl-ben, hogy nem kell előre definiálni a változókat, simán létre lehet hozni elsőre egy sor 12. elemét, anélkül, hogy a többivel törődni kellene. Sőt, összetett változók esetén sem kell azzal babrálni, hogy a komponenseket típusait definiálnánk. Ezen a példán:

"2004. 05.17 13:19;Eper;5997.35"


perl -MData::Dumper -e '$item = "Eper"; $month=5;

%hash = (); $hash{$item}->[$month] ++; print Dumper %hash;'


A létrehozott hash Eper kulcsához tartozó érték automatikusan egy sor referencia, aminek az 5 eleme 1. A 0 -> 4 elem is létre lett hozva automatikusan 'undef' értékkel. Szép. Ez egy olyan feature, ami rettenetesen hatékonnyá teszi Perl-t, persze sok, magukat komolynak tartó programozók pont ezért, a szerintük hanyagság miatt utálják.


Python-ban egy kis tesztet kell írni, hogy létre lett-e már hozva az Eper kulcs, mert, ha nem initializálni kell a 12db nullával. :D


(Aztán gondolom annyi lesz a komplikáció a feladatban, hogy fel kell készülni arra, hogy több hónapban is lehet maximális számú vásárlás)

2016. dec. 16. 03:49
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!