C Programming
 
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 LanguagesC Programming

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 10th, 2012, 12:30 AM
Astrodude Astrodude is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2012
Posts: 22 Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 h 57 m 34 sec
Reputation Power: 0
Line up numbers

How do I line up the numbers a user inputs into a column in such a way that the place values are guaranteed to align, regardless of the size of the integer?

I get:
5
145
7
45

I want:
_ _5
145
__7

etc

Reply With Quote
  #2  
Old November 10th, 2012, 12:37 AM
salem's Avatar
salem salem is offline
Contributed User
Click here for more information
 
Join Date: Jun 2005
Posts: 3,838 salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)  Folding Points: 153 Folding Title: Novice Folder
Time spent in forums: 2 Months 3 Weeks 2 Days 17 h 9 m 51 sec
Reputation Power: 1774
Try say in C
printf("%5d\n", number);

Or in C++
cout << setw(5) << number << endl;
__________________
If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
If at first you don't succeed, try writing your phone number on the exam paper

Reply With Quote
  #3  
Old November 10th, 2012, 10:14 PM
Astrodude Astrodude is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2012
Posts: 22 Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 h 57 m 34 sec
Reputation Power: 0
Quote:
Originally Posted by salem
Try say in C
printf("%5d\n", number);

Or in C++
cout << setw(5) << number << endl;


Nope, doesn't work.

Reply With Quote
  #4  
Old November 10th, 2012, 11:14 PM
salem's Avatar
salem salem is offline
Contributed User
Click here for more information
 
Join Date: Jun 2005
Posts: 3,838 salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)  Folding Points: 153 Folding Title: Novice Folder
Time spent in forums: 2 Months 3 Weeks 2 Days 17 h 9 m 51 sec
Reputation Power: 1774
> Nope, doesn't work.
Oh what a pity

Reply With Quote
  #5  
Old November 10th, 2012, 11:56 PM
Astrodude Astrodude is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2012
Posts: 22 Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 h 57 m 34 sec
Reputation Power: 0
Quote:
Originally Posted by salem
> Nope, doesn't work.
Oh what a pity


It doesn't change the spacing depending on the number of places. Whenever the numbers print, I get:

1
100
45

I need:
__1
100
_45

with __representing spaces. The %5d changes the spacing for all of the numbers, so they're still off balance. The only way I can conceive of doing it is to use a ton of if-statements and printf statements.

Remember, all values are integers.

Reply With Quote
  #6  
Old November 11th, 2012, 12:41 AM
salem's Avatar
salem salem is offline
Contributed User
Click here for more information
 
Join Date: Jun 2005
Posts: 3,838 salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)  Folding Points: 153 Folding Title: Novice Folder
Time spent in forums: 2 Months 3 Weeks 2 Days 17 h 9 m 51 sec
Reputation Power: 1774
Perhaps you could remember to post your code.

"It doesn't work" is not a useful description of your problem.

Reply With Quote
  #7  
Old November 11th, 2012, 12:45 AM
Astrodude Astrodude is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2012
Posts: 22 Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 h 57 m 34 sec
Reputation Power: 0
Quote:
Originally Posted by salem
Perhaps you could remember to post your code.

"It doesn't work" is not a useful description of your problem.


Here you go!
Code:
for(i=0;i<size;i++)
{
	printf("     %5d     %5d\n",x[i],s[i]);
}
			printf("\nValue  Count\n");
			
for(i=0;i<d+1;i++)
{
	printf("   %5d -        %5d\n",v[i],c[i]);
}

Reply With Quote
  #8  
Old November 11th, 2012, 02:04 AM
salem's Avatar
salem salem is offline
Contributed User
Click here for more information
 
Join Date: Jun 2005
Posts: 3,838 salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)  Folding Points: 153 Folding Title: Novice Folder
Time spent in forums: 2 Months 3 Weeks 2 Days 17 h 9 m 51 sec
Reputation Power: 1774
No idea - it works for me.
Code:
$ cat foo.c
#include <stdio.h>

int main(int argc, char *argv[])
{
    int x[10] = { 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000 };
    int i;
    for ( i = 0 ; i < 10 ; i++ ) {
        printf("%5d\n", x[i] );
    }
    return 0;
}
$ gcc foo.c
$ ./a.out 
    1
    2
    5
   10
   20
   50
  100
  200
  500
 1000

Reply With Quote
  #9  
Old November 11th, 2012, 04:07 PM
Astrodude Astrodude is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2012
Posts: 22 Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level)Astrodude User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 h 57 m 34 sec
Reputation Power: 0
Quote:
Originally Posted by salem
No idea - it works for me.
Code:
$ cat foo.c
#include <stdio.h>

int main(int argc, char *argv[])
{
    int x[10] = { 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000 };
    int i;
    for ( i = 0 ; i < 10 ; i++ ) {
        printf("%5d\n", x[i] );
    }
    return 0;
}
$ gcc foo.c
$ ./a.out 
    1
    2
    5
   10
   20
   50
  100
  200
  500
 1000


Could the problem be that I'm trying to print out two columns?
I'm trying to get both columns, minus the "__" to be:


1 __1
5 __5
10 __14
20 __18
50 __145
100 etc
200
500
1000

Reply With Quote
  #10  
Old November 11th, 2012, 06:27 PM
Scorpions4ever's Avatar
Scorpions4ever Scorpions4ever is offline
Banned ;)
Dev Shed God 9th Plane (9000 - 9499 posts)
 
Join Date: Nov 2001
Location: Woodland Hills, Los Angeles County, California, USA
Posts: 9,385 Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 4 Weeks 1 Day 21 h 29 m 56 sec
Reputation Power: 4080
One way to handle this is to check the return value of printf(). It returns the number of characters that it printed. That way, you can figure out how many spaces to print before printing the second number.
Code:
#define INDENT_WIDTH 10
int i, idx;

idx = printf("%d", first_number);
/* Now print as many spaces as needed to get to the next column */
for (i = idx; i < INDENT_WIDTH; i++) {
    printf(" ");
}
/* Now print the second number */
printf("%d\n", second_number);
__________________
Up the Irons
What Would Jimi Do? Smash amps. Burn guitar. Take the groupies home.
"Death Before Dishonour, my Friends!!" - Bruce D ickinson, Iron Maiden Aug 20, 2005 @ OzzFest
Down with Sharon Osbourne

Reply With Quote
  #11  
Old November 11th, 2012, 08:40 PM
Lux Perpetua Lux Perpetua is offline
Contributing User
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Feb 2004
Location: San Francisco Bay
Posts: 1,936 Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level)Lux Perpetua User rank is General 5th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 1 Week 2 h 12 m 42 sec
Reputation Power: 1312
Quote:
Originally Posted by Astrodude
Could the problem be that I'm trying to print out two columns?
I'm confused. Multiple columns should line up as long as you don't exceed the field width. I saw your earlier post where you posted some code, but I still don't see what the problem is.
Code:
% cat test.c
#include <stdio.h>

int main(int argc, char *argv[])
{
    int x[10] = { 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000 };
    int i;
    for ( i = 0 ; i < 10 ; i++ ) {
        printf("%5d  %5d  %5d\n", x[i], x[i]*3, x[i]*7);
    }
    return 0;
}

% gcc -ansi -Wall -pedantic test.c
% ./a.out
    1      3      7
    2      6     14
    5     15     35
   10     30     70
   20     60    140
   50    150    350
  100    300    700
  200    600   1400
  500   1500   3500
 1000   3000   7000

Reply With Quote
  #12  
Old November 11th, 2012, 11:36 PM
salem's Avatar
salem salem is offline
Contributed User
Click here for more information
 
Join Date: Jun 2005
Posts: 3,838 salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)salem User rank is General 12nd Grade (Above 100000 Reputation Level)  Folding Points: 153 Folding Title: Novice Folder
Time spent in forums: 2 Months 3 Weeks 2 Days 17 h 9 m 51 sec
Reputation Power: 1774
> Could the problem be that I'm trying to print out two columns?
No, the problem is you can't be bothered to add a few more lines to your test code to make it a COMPLETE program we can run, and see the problem that you're seeing.

So instead there have been 3 separate guesses at trying to figure out what possible reason "%5d" isn't lining up for you.

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesC Programming > Line up numbers

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