Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ciąg arytmetyczny
NexUsDK
post 4.12.2020, 11:20:41
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.12.2020

Ostrzeżenie: (0%)
-----


Witam.
Mam do napisania skrypt, który będzie wypisywał po przecinku wszystkie wyrazy ciągu arytmetycznego, którego pierwszy wyraz, różnica i ilość wyrazów w ciągu są podawane przez użytkownika.
Napisałem go najpierw w JS, w którym zadziałał bez problemu, ale przy przeróbce go na PHP, pokazuje mi takie błędy ( jest ich tyle, ile powinno być wypisanych wyrazów ):
"Warning: A non-numeric value encountered in [ścieżka do pliku] on line 73"

Rozumiem z tego, że błąd dotyczy wartości nienumerycznej w kodzie. Niby wiem gdzie jest "wadliwy" element kodu, ale kiedy usunę to go, to nie wyświetla mi poprawnie wyniku. Próbuję ciągle wymyślić coś, ale jakoś nie idzie.

Formularz:

  1. <form method="POST">
  2. Pierwszy wyraz A1: <input type="number" name="A1"><br>
  3. Różnica ciągu R: <input type="number" name="R"><br>
  4. Liczba wyrazów w ciągu N: <input type="number" name="N"><br>
  5. <input type="submit" name="przycisk" value="Generuj ciąg">
  6. </form>


A to skrypt:

  1.  
  2. if(isset($_POST['A1']))
  3. {
  4.  
  5. $A1 = $_POST['A1'];
  6. $R = $_POST['R'];
  7. $N = $_POST['N'];
  8.  
  9. $ciag=0;
  10. $x=", ";
  11. for ($i=1; $i<=$N;$i++)
  12. {
  13. $ciag+=$A1 +($i-1) * $R + $x;
  14.  
  15. }
  16.  
  17. echo "<p>Ciąg arytmetyczny zawiera wyrazy: ".$ciag.".";
  18.  
  19. }
  20.  
  21.  


Mógłby ktoś pomóc mi w zrobieniu tego tak, jak należy i w miarę możliwości wytłumaczyć o co z tym biega i jak to zostało zrobione?

Ten post edytował NexUsDK 4.12.2020, 11:21:38
Go to the top of the page
+Quote Post
nospor
post 4.12.2020, 11:25:16
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




teksty w php laczy sie przy pomocy kropki a nie plusa

przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
NexUsDK
post 4.12.2020, 12:03:14
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.12.2020

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 4.12.2020, 11:25:16 ) *
teksty w php laczy sie przy pomocy kropki a nie plusa

przenosze


Przepraszam za zły dział. Nie zauważyłem tego, więc napisałem gdzie napisałem.

A co do mojego problemu, to tak, łączy się kropką, racja, ale kiedy w miejscu gdzie mam $ciag i na końcu + $x, kiedy + zmienię na kropkę, jest inny błąd, a pod nim tekst, który wypisuje nie to co trzeba.

Notice: A non well formed numeric value encountered in [ścieżka] on line 73
Ciąg arytmetyczny zawiera wyrazy: 9, .

Natomiast jak dam z kropką już w zdaniu na końcu, to wtedy nie wypisuje mi liczb wszystkich, a jedynie w tekście pokazuje się przecinek na końcu.

Ten post edytował NexUsDK 4.12.2020, 12:09:53
Go to the top of the page
+Quote Post
viking
post 4.12.2020, 12:55:24
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  1. $_POST['A1'] = 1;
  2. $_POST['R'] = 2;
  3. $_POST['N'] = 3;
  4.  
  5. if(isset($_POST['A1']))
  6. {
  7.  
  8. $A1 = $_POST['A1'] ?? 0;
  9. $R = $_POST['R'] ?? 0;
  10. $N = $_POST['N'] ?? 0;
  11.  
  12. $ciag=[];
  13.  
  14. for ($i=1; $i<=$N;$i++)
  15. {
  16. $ciag[] = $A1 +($i-1) * $R;
  17.  
  18. }
  19.  
  20. echo "<p>Ciąg arytmetyczny zawiera wyrazy: ".implode(',', $ciag).".";
  21.  
  22. }


Ten post edytował viking 4.12.2020, 12:55:34


--------------------
Go to the top of the page
+Quote Post
NexUsDK
post 4.12.2020, 13:12:09
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.12.2020

Ostrzeżenie: (0%)
-----


Cytat(viking @ 4.12.2020, 12:55:24 ) *
  1. $_POST['A1'] = 1;
  2. $_POST['R'] = 2;
  3. $_POST['N'] = 3;
  4.  
  5. if(isset($_POST['A1']))
  6. {
  7.  
  8. $A1 = $_POST['A1'] questionmark.gif 0;
  9. $R = $_POST['R'] questionmark.gif 0;
  10. $N = $_POST['N'] questionmark.gif 0;
  11.  
  12. $ciag=[];
  13.  
  14. for ($i=1; $i<=$N;$i++)
  15. {
  16. $ciag[] = $A1 +($i-1) * $R;
  17.  
  18. }
  19.  
  20. echo "<p>Ciąg arytmetyczny zawiera wyrazy: ".implode(',', $ciag).".";
  21.  
  22. }


Dziękuję serdecznie za pomoc
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:02