Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Programowanie własnych funkcji
Forum PHP.pl > Forum > Przedszkole
glazi91
Witam,
Jestem studentem I roku i mam problem z podstawami programowania w PHP. Męczę się z tym już ponad 2 tygodnie i dalej mi ciężko to zrozumieć. Więc jak ktoś mógłby spojrzeć na te zadania byłbym bardzo wdzięczny.:-)

zad.1
Napisać funkcję o nazwie SumaLiczb (o 2 parametrach: $zakres1, $zakres2), która zwraca sumę liczb z zakresu od $zakres1 do $zakres2 (włącznie).
Należy przy tym najpierw sprawdzić, czy $zakres 1 jest mniejsze lub równe $zakres2- jeśli nie, to należy zamienić między sobą obie liczby (wykorzystać funkcję z Zad 1). Pierwsze zadanie zrobiłem tak:

function ZamienLiczbyJesliTrzeba(&$liczba1, &$liczba2)
{
if($liczba1 > $liczba2)
{
$tmp = $liczba1;
$liczba1 = $liczba2;
$liczba2 = $tmp;
echo "zamienilem ";
}else{
echo "nie zamienilem ";
}
}

zad 3

Napisać funkcję o nazwie ListaLiczb o parametrach: $zakres1, $zakres2, $ilosc wczytujący do utworzonej wewnątrz funkcji tablicy $tab losowe liczby całkowite z zakresu od $zakres1 do $zakres2 w ilości $ilosc.
Zweryfikować zmienne $zakres1 i $zakres2 podobnie jak w zad 2
Dodatkowo, jeśli $ilosc nie jest większa od zera, to wyświetlić komunikat o błędzie i przerwać działanie funkcji.
Ostatecznie funkcja wyświetla liczby z tablicy w postaci listy nienumerowanej.

zad 4
Napisać funkcję o nazwie WyswietlLiczby_ObliczSrednia o 4 parametrach($ilosc1 $ilosc2 $zakres1 $zakres2) wczytując do tablicy $tab utworzonej wewnątrz funkcji losową ilość liczb(ilosc elementów od $ilosc1 do $ilosc2).
Każdy element tablicy ma być losową liczbą z zakresu od $zakres1 do $zakres2.
Następnie funkcja ma wyświetlić te liczby w tabeli o grubości linii 1 (tylko pojedyncza kolumna).
Ostatecznie funkcja ma zwrócić średnią arytmetyczną liczb z tej tablicy.

Resztę zadań spróbuje zrobić sam jak pomożecie mi zrobić te, to z resztą powinienem sobie poradzić tylko potrzebuje zobaczyć jak to zacząć.

Z góry dziękuje wam za pomoc.:-)
Pozdrawiam,
Kshyhoo
Niestety, nie rozwiązujemy zadań. Jak masz problem z kodem, to zapraszamy.
glazi91
jak prześle kody tych zadań jak ja zrobiłem (oczywiscie nie do końca dobrze) to pomożecie?:-)
Kshyhoo
Możemy pomóc, ale nikt nie zrobić nic za Ciebie.
glazi91
ok. to jutro prześle kody bo mam na innym komputerze.
Pozdrawiam

to zad 1
Kod
<?php
function ZamienLiczbyJesliTrzeba(&$liczba1, &$liczba2)
{    
    if($liczba1 > $liczba2)
    {
         list($liczba1, $liczba2) = array($liczba2, $liczba1);
        echo "zamienilem ";
    }
    else
    {
        echo "nie zamienilem ";
    }
}
?>

zad 2

<?php
function SumaLiczb(&$Zakres1, &$Zakres2)
{
    if($Zakres1<=$Zakres2)
    {
        $suma=$Zakres1+$Zakres2;
        echo "Dodalem";
    }
    else
    {
        ZamienLiczbyJesliTrzeba(&$Zakres1, &$Zakres2);
        $suma=$Zakres1+$Zakres2;
        echo "Zamienilem liczby i dodalem";
    }
    return $suma;
}
?>

zad 3

<?php
function ListaLiczb($Zakres1, $Zakres2, $ilosc)
{
$Zakres1=rand(-10,10);
$Zakres2=rand(-10,10);
$tab[]=array($Zakres1, $Zakres2);
$ilosc=count($tab);
    if($ilosc<0)
    {
        echo" Ilosc elementow w tablicy musi byc wieksza od 0.";
        return;
    }
    else
    {
    //nie wiem jak wywolac liste nienumerowana.
    }
}
?>

zad 4

<?php
function DzielenieTekstow($wyrazenie_zlozone)
{
$wyrazenie_zlozone = 'Komputer,Serwer,Router,Klawiatura,Mysz,Karta sieciowa,Monitor,Zasilacz';
echo "$wyrazenie_zlozone<br/>";
$wyrazenie_zlozone = explode(',', $wyrazenie_zlozone);
for($i = 0; $i < count($wyrazenie_zlozone); $i++)
{
    echo "$wyrazenie_zlozone[$i]";
}
}
?>


I wiem ze to zle...ale nie wiem w czym tkwi problem:)
nospor
1) Temat: Jak poprawnie zatytulowac watek
2) Proszę używać bbcode!
3)
Cytat
I wiem ze to zle...ale nie wiem w czym tkwi problem:)
A czymże się objawia to źle?
glazi91
objawia się tym że nie zaliczyłęm U wykładowcy:P
i przepraszam ze nie napisalem tamtego w BBcode:)
nospor
$tab[]=array($Zakres1, $Zakres2);
$ilosc=count($tab);
if($ilosc<0)
Zawsze do tablicy dodajesz dwie liczby i jeszcze robisz warunek, czy przypadkiem tablica nie mniej niż 0 elementów? Logike już miałeś na tych studiach?

ps: $tab[]=array
wiesz w ogole po co używa się [] ? Nic dziwnego, że cię oblał. Przecież ty nie znasz totalnych podstaw. Najpierw się uczymy, potem chodzimy na zaliczenia
glazi91
Cytat
Dodatkowo, jeśli $ilosc nie jest większa od zera, to wyświetlić komunikat o błędzie i przerwać działanie funkcji.


programowanie dopiero zaczełem a to miało się odności do tej części zadania...przecież wiem że jest źle i właśnie chce się tutaj dowiedzieć co..
nospor
Ja sie nie pytalem o programowanie a o logike. To są dwa oddzielne przedmioty smile.gif

Dobra, nie ważne. Napisałem tu tylko dlatego, że miałeś durny tytuł i nadal masz. Proszę na PW poprawny tytuł tematu, w przeciwnym wypadku temat zamknę.
glazi91
Cytat
ps: $tab[]=array
wiesz w ogole po co używa się [] ? Nic dziwnego, że cię oblał. Przecież ty nie znasz totalnych podstaw. Najpierw się uczymy, potem chodzimy na zaliczenia


W internecie czytałem ze służy do numerowania tablic czy cos takiego.
Kshyhoo
Cytat(glazi91 @ 15.02.2012, 17:47:07 ) *
objawia się tym że nie zaliczyłęm U wykładowcy:P

Mnie zawsze zastanawia powód obrania kierunku nauki. Ja wiem, że nie zostałem weterynarzem, bo nie lubię grzebać w zdechłych zwierzach a i w żywych byłoby gdzie pogrzebać - co mnie również nie interesuje...
Cytat(glazi91 @ 15.02.2012, 17:47:07 ) *
i przepraszam ze nie napisalem tamtego w BBcode:)

Istnieje funkcja .

Po za tym, używaj odpowiedniego formatowania kodu (wcięcia, itp). Przypomnę też, że funkcja musi coś zwrócić, nie wszędzie o tym pamiętasz.
nospor
Cytat
). Przypomnę też, że funkcja musi coś zwrócić, nie wszędzie o tym pamiętasz.
Bo przekazuje parametry przez referencje.... Hehe, studencik okazał się mądrzejszy od starego wygi ;P Za karę rozwiązujesz mu zadania wink.gif
Kshyhoo
Stary to może jestem, ale gdzie tam mi do wygi smile.gif
glazi91
I nie ma nikogo kto może wytłumaczyć jakie robie błędy?
krzywy36
Po pierwsze wstawiaj kod w bbcode bo strasznie się to czyta, co do zadania z sumowaniem, załóżmy, że $zakres1 = 2 i $zakres2 = 5, jakie liczby masz tu zsumowac? podpowiem: 2, 3, 4 i 5, a Ty sumujesz 2 i 5, widzisz w czym problem? Zupdateuję zaraz post o następne zadania.

Edit: kolejne zadanie - lista, po pierwsze losujesz liczby od -10 do 10 a w zadaniu jest napisane, że ma losować od $zakres1 do $zakres2 (wiesz czym jest zakres?), potem sprawdzasz jaką wielkość ma tablica do której przypisałeś jakieś bzdety. $ilosc ustalasz przekazując parametr do funkcji i Twoja tablica z liczbami losowymi powinna mieć $ilość elementów, rozumiesz? Powinieneś użyć pętli która się wykona $ilość razy, i za każdym wykonaniem umieści w tablicy losową wartość z zakresu $zakres1 do $zakres2. Czytaj uważnie i ze zrozumieniem, te zadania nie są trudne.
glazi91
już wiem o co ci chodzi tylko jakiej funkcji mam użyć by dodać zakres od $zakres1 do $zakres2?
nospor
FOR - patrz manual
http://www.php.net/manual/en/control-structures.for.php
glazi91
Cytat
for ($i = 1; $i <= 10; $i++) {
echo $i;
}


to z tego co rozumiem to mam zrobić coś takigo:

$zakres1 = 1 $zakres1;<=10; $zakres1++

$zakres2 = $zakres1 + $zakres2

?

właśnie to mi ciężko pojąć:/
krzywy36
wiesz czym są pętle i jak działają? w tym wypadku pętla for. Jestem pewien, że nie wiesz, więc zabierz się najpierw za to. Przeanalizuj poniższy kod:
  1. <?php
  2.  
  3. $zakres1 = 2;
  4. $zakres2 = 7;
  5.  
  6. for($i = $zakres1; $i <= $zakres2; $i++)
  7. {
  8. echo $i . ' ';
  9. }
  10.  
  11. ?>


w php nie ma jako takiej struktury definiującej zakres, ale powyższy kod wyświetla wszystkie liczby z podanego zakresu, poczytaj o pętlach.
glazi91
do zdania 4 to rozumiem że musi to być pętla foreach?
krzywy36
może, nie musi.

Edit:
btw, kod php wstawiaj w znaczniki php a nie code, ładniej wygląda wink.gif
glazi91
dobra zaraz spróbuje poprawić zadanie 3 zobaczymy co wyjdzie..

jeszcze jedno pytanie

Bo chodzi o to że
$zakres1 i $zakres2 nie miały przypisane liczby bo wykładowa sprawdza te funkcje na swoim skrypcie
krzywy36
Przypisałem do nich przykładowe liczby, żebyś zrozumiał o co chodzi, skrypt będzie działał niezależnie od tego jakie wartości będą miały te zmienne.
glazi91
Kod
<?php
function SumaLiczb(&$Zakres1, &$Zakres2)
{
$i=rand($Zakres1,$Zakres2);

    if($Zakres1<=$Zakres2)
    {
        $suma=$i;
        echo "Dodalem";
    }
    else
    {
        ZamienLiczbyJesliTrzeba(&$Zakres1, &$Zakres2);
        $suma=$i;
        echo "Zamienilem liczby i dodalem";
    }
    return $suma;
}
?>



a tak jest dobrze?
krzywy36
a działa?...

przeanalizowałeś kod który napisałem? musisz ZSUMOWAĆ wylosowane liczby, a Twoja $suma to rand($zakres1, $zakres2).

Zrób tak:
1. Tworzysz pętlę która wykonuje się $ilość razy.
2. W pętli losujesz liczbę z zakresu od $zakres1 do $zakres2 i dodajesz ją do ogólnej sumy
3. Po pętli zwracasz sumę.

Prościej się nie da... powyższy algorytm nie przewiduje zamiany $zakres1 i $zakres2, ale jeśli napiszesz to tak żeby działało to z dodaniem zamieniania nie będzie problemu.
glazi91
<?php
function SumaLiczb(&$Zakres1, &$Zakres2)
{
$i=rand($Zakres1,$Zakres2);

if($suma = $zakres1; $suma <= $zakres2; $suma++)
{
echo "Dodalem";
}
else
{
ZamienLiczbyJesliTrzeba(&$Zakres1, &$Zakres2);
$suma= $zakres1; $suma <= $zakres2; $suma++;
echo "Zamienilem liczby i dodalem";
}
return $suma;
}
?>

czy tak? bo nie wiem jak dodac zakres do siebie wykorzystujac pętle bo jak zakres2 jest mniejszy to musze zamienic i dopiero dadac a jak wiekszy to dodać
krzywy36
nie, nie tak. Odpowiedź masz w moim poprzednim poście... CZYTAJ ZE ZROZUMIENIEM. Ja się poddaję, może komuś innemu się nudzi.
nospor
Proszono Cię wiele razy. Nie słuchasz, twoja sprawa.zamykam

Jak uznasz, że uzywanie poprawnego bbcode oplaca sie - zapraszam na PW

edit: otwieram
glazi91
  1. function SumaLiczb(&$Zakres1, &$Zakres2)
  2. {
  3. if($i = $zakres1; $i <= $Zakres2; $i++);
  4. {
  5. echo $i . ' ';
  6. }
  7. else
  8. {
  9. ZamienLiczbyJesliTrzeba(&$Zakres1, &$Zakres2);
  10. {
  11. echo "Zamienilem liczby i dodalem";
  12. }
  13. }
  14. return $i;
  15. }
  16. ?>


co jeszcze trzeba tu zmienic:(
nospor
if($i = $zakres1; $i <= $Zakres2; $i++);
CO TO JEST?

Rozróżniasz IF od FOR?



Piszesz te posty co parę minut bez żadnego zastanowienia. strzelasz kodem na lewo i prawo z nadzieją, że może trafisz. Ty w ogóle nie kumasz co piszesz.
Forum jest od pomagania a nie od myślenia za Ciebie.
Ty jesteś albo niesamowity leń, albo niesamowita ciemna masa. Sorki, że tak piszę, ale może sie wkoncu otrząśniesz i się weźmiesz w garść.

Nie rozumiesz banalnego FOR? Nie rozumiesz jak to działa? To weź człowieku usiądź nad tym forem, popatrz na przykłady, przeanalizuj, zrób, potestuj, pozmieniaj parametry i zobacz co się dzieje. Jak ty chcesz coś zaliczyć jak ty tak prostych rzeczy nie rozumiesz. No my za ciebie nie będziemy myśleć.
piotrooo89
studiuje informatykę i nie mogę patrzyć jak kaleczysz programowanie... na 1 roku jest wstęp do programowania, proszę chodź na wykłady i laborki...

temat, zamykam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.