PHP Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsProgramming LanguagesPHP Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old November 28th, 2012, 11:08 AM
thenewbeat thenewbeat is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Dec 2005
Posts: 3 thenewbeat User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 45 m 13 sec
Reputation Power: 0
Number series loops

I'm working on a very simple script to create a numbering database file for a numbering machine. ! basically have 4 variables:

Total numbers
Starting number
Numbers per page
Pages per set

Here's an example of the output I'm needing:

Total numbers 6
Starting number 1
Numbers per page 2
Pages per set 3
Output: 1,2,1,2,1,2,3,4,3,4,3,4,5,6,5,6,5,6


I'm really having trouble wrapping my head around the while loops. Here's what I've got thus far:

PHP Code:
 $total_numbers 6;
$start_number 1;
$numbers_per_page 2;
$pages_per_set 3;
$print_number $start_number;

$tn 1;
while (
$tn <= $total_numbers)
{
    
$pps 1;
    while (
$pps <= $pages_per_set
    {
        
$npp 1;
        if (
$pps <= $pages_per_set)
        {
            
$print_number $start_number;
        }

        while (
$npp <= $numbers_per_page
        {
            print 
$print_number."\n"
            
$print_number++;
            
$npp++;
        }
        
$pps++;
    }
    
$tn++;



I'm obviously missing a few crucial steps, but haven't had enough experience to figure this out.

Reply With Quote
  #2  
Old November 28th, 2012, 11:17 AM
Jacques1's Avatar
Jacques1 Jacques1 is offline
pollyanna
Click here for more information.
 
Join Date: Jul 2012
Location: Germany
Posts: 1,863 Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 1 Day 19 h 44 m 40 sec
Reputation Power: 813
Hi,

use for loops, not while loops. This will make the code much more compact and readable.

PHP Code:
 $total_numbers 18
$start_number 1
$numbers_per_page 3
$pages_per_set 3

$number_of_sets $total_numbers / ($pages_per_set $numbers_per_page);

for (
$set 0$set $number_of_sets$set++)
    for (
$page 0$page $pages_per_set$page++)
        for (
$number 0$number $numbers_per_page$number++)
            
# calculation of the number 


In the innermost loop, you can now calculate the number.

Look at the number sequence:

Code:
set 0:
start, start + 1, ..., start + npp - 1 (repeated pps times)
set 1:
start + npp, start + npp + 1, ..., start + npp + npp - 1 (repeated pps times)
set 2:
start + 2 * npp, start + 2 * npp + 1, ..., start + 2 * npp + npp - 1 (repeated pps times)
...


Do you see the pattern? As a hint: The number depends on the start number, the current set and the number index within the page.

The problem with your approach is that you're constantly incrementing the current number while it's actually going up and down.

Last edited by Jacques1 : November 28th, 2012 at 01:07 PM. Reason: nonsense

Reply With Quote
  #3  
Old November 28th, 2012, 04:31 PM
thenewbeat thenewbeat is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Dec 2005
Posts: 3 thenewbeat User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 45 m 13 sec
Reputation Power: 0
Thanks for the help. I ended up sticking with while loops for now since that's what I know. Here's my code:

PHP Code:
 $total_numbers 10;
$start_number 1;
$numbers_per_page 2;
$pages_per_set 4;
$fill 4;


$tn 1;
while (
$tn <= ($total_numbers/$numbers_per_page))
{
    
$pps 1;
    while (
$pps <= $pages_per_set
    {
        
$npp 1;
        if (
$pps <= $pages_per_set)
        {
            
$print_number $start_number;
        }
        while (
$npp <= $numbers_per_page
        {
            
$print_number_length strlen($print_number);
            
$print_number_fill = ($fill $print_number_length);
            
            for( 
$i=0$i<$print_number_fill$i++ )
            {
                
$zeros $zeros.'0';
            }
            echo 
"$zeros$print_number\n";
            
$print_number++;
            
$npp++;
            unset(
$zeros);
        }
        
$pps++;
    }
    
$tn++;
    
$start_number = ($start_number+$numbers_per_page);



the output for that code:
0001
0002
0001
0002
0001
0002
0001
0002
0003
0004
0003
0004
0003
0004
0003
0004
0005
0006
0005
0006
0005
0006
0005
0006
0007
0008
0007
0008
0007
0008
0007
0008
0009
0010
0009
0010
0009
0010
0009
0010

Reply With Quote
  #4  
Old November 28th, 2012, 05:53 PM
Jacques1's Avatar
Jacques1 Jacques1 is offline
pollyanna
Click here for more information.
 
Join Date: Jul 2012
Location: Germany
Posts: 1,863 Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level)Jacques1 User rank is Lieutenant General (80000 - 90000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 1 Day 19 h 44 m 40 sec
Reputation Power: 813
Quote:
Originally Posted by thenewbeat
I ended up sticking with while loops for now since that's what I know.


If you don't know "for" loops, learn them. It's the most basic control structure right after "if" and "while". And it isn't complicated at all. A "for" loop is basically just a special "while" loop with an integrated counter mechanism.

You also don't have to do the string padding yourself, the printf() function will do it for you:
PHP Code:
// pad the number with 0s on the left to at least 4 characters
printf('%04d'7); 


So that's how I would have solved the problem:

PHP Code:
<?php

$total_numbers 
36;  
$start_number 1;  
$numbers_per_page 2;  
$pages_per_set 3;
$min_number_width 4

$number_of_sets $total_numbers / ($pages_per_set $numbers_per_page); 

for (
$set 0$set $number_of_sets$set++) 
    for (
$page 0$page $pages_per_set$page++) 
        for (
$number 0$number $numbers_per_page$number++) 
            
printf("%0{$min_number_width}d"$start_number $set $numbers_per_page $number);

Reply With Quote
  #5  
Old December 5th, 2012, 11:27 PM
thenewbeat thenewbeat is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Dec 2005
Posts: 3 thenewbeat User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 45 m 13 sec
Reputation Power: 0
Thanks for the printf tip. When I use it I get a strange tag after each number.
PHP Code:
 $fill 5;

printf("%0{$fill}d"$print_number); 


outputs:

00001<d>

Reply With Quote
  #6  
Old December 6th, 2012, 12:42 AM
Raja Nomi Raja Nomi is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Dec 2012
Posts: 1 Raja Nomi User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 9 m 36 sec
Reputation Power: 0
Software Design

Hello everyone,

I am looking for a tool to help me memorize arabic text. This tool should be similar to this one, "How to Memorize Verbatim Text - Productivity501". Please search for that article thru Google as outside links are not allowed here. The tool I'm referring to is at the bottom of the article.

The tool should be able to extract up to first 3 letters of an Arabic word when I copy paste the Arabic text into the tool field box.

Can this be done automatically or will I need this be done manually where someone goes through the text and inserts first 3 letters from each word. What programming language can this be coded in? Which would give the best result? I want it to be a fluid user experience.

Here is an example of Arabic text. Please search for "Learn Quran" thru Google as outside links are not allowed here.

Thanks!

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesPHP Development > Number series loops

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap