Caffeine Coder
Caffeine Coder

Reputation: 1879

I am facing a small bump printing number pyramids , still a newbie to php and programming

What i want to print is

1

3 5

7 9 11

With my current code , that is ...

<?php

function Odd($limit='20'){

$c = 1;
while($c <= $limit){
if ($c % 2!=0){
echo $c ;
echo "<br/>";
}
$c++ ;

}
}
Print Odd();
?> 

i am getting 1 3 5 7 9 11

Can someone please guide me the right way ?

Upvotes: 0

Views: 1050

Answers (3)

user2533777
user2533777

Reputation:

From your question it Seems you are really new to programming so before writing any program first of all observe the question properly:

For example for the question above it is clear that is an triangle of odd numbers.

now the number of odd numbers on each row is equal to the row i.e 1st row contains 1 number ,2nd contains 2 and it continues...

Now what we do is take an variable to count the no of rows say $row and the other will be $limit .

<?php
function odd($limit){
    $row=1;
    $current_number=1;
    while($current_number<=$limit){
        for($i=1;$i<=$row;$i++){
            echo $current_number." ";
            $current_number=$current_number+2;//incrementing numbers by 2 if you want to increment by 1 i.e print all numbers replace 2 by 1
        }
        $row++;
        echo "<br/>";//for new line
    }
}

To run above function you need to call it and pass the value of $limit.To do it just type anywhere outside of this function.

odd(20);

Watch this running here:

Upvotes: 0

Realit&#228;tsverlust
Realit&#228;tsverlust

Reputation: 3953

Aaah ... ok.^^ Now i got it.

Its pretty easy: You need another variable which counts up and one which limits the breakposition. Looks like this:

<?php

function Odd($limit='40'){

    $c = 1;
    $count = 0;
    $break = 1;

    while($c <= $limit){
        if ($c % 2!=0){
            echo $c . " ";
            $count++;

            if($count === $break) {
                echo "<br/>";
                $break++;
                $count = 0;
            }
        }
        $c++ ;

    }
}
Print Odd();
?>

Output till 40:

1
3 5
7 9 11
13 15 17 19
21 23 25 27 29
31 33 35 37 39 

Edit: Code for your new request:

<?php

function Odd($limit='40'){

$c = 1;
$count = 0;
$break = 1;

while($c <= $limit){
        echo $c . " ";
        $count++;
        if($count === $break) {
            echo "<br/>";
            $break++;
            $count = 0;
        }
    $c++ ;

    }
}
Print Odd();
?>

Upvotes: 2

Andreea
Andreea

Reputation: 139

So if I understand correctly you want to output something like that:
1
3 5
7 9 11
13 15 17 19

Here is my solution:

function Odd($limit='20'){
$c = 1;$some_array = array();
while($c <= $limit){
    if ($c % 2!=0){
        $some_array[]=$c; 
    }
    $c++ ;

}
return $some_array;

}

$array = Odd();
$nr =0; 
$j=1;
foreach ($array as $key => $value) {
echo $value.'&nbsp;';$nr++;
if($nr==$j){
    echo '<br />';
    $nr=0;
    $j++;
}
}

Hope this helps!

Upvotes: 1

Related Questions