Difference between revisions of "CSC111 Homework 9 2014"

From dftwiki3
Jump to: navigation, search
(Problem #2)
(Problem #2)
Line 235: Line 235:
 
<br />
 
<br />
 
<br />
 
<br />
 +
==Requirements==
 +
* The gap between the two columns is 1 space
 +
* If the number of lines in the two columns is different, then make the first column the longer of the two.
 +
* The difference between the number of lines in the two columns is at most one line.
 +
* You may assume that the width specified by the user will '''always''' be larger than or equal to the length of the longest word.
 +
* Your program will ask the name of the file first, then the width of the first column, and then it will rewrap the file, overwriting the file with the two columns of text.
  
 
=Submission=
 
=Submission=

Revision as of 19:29, 2 April 2014

--D. Thiebaut (talk) 18:25, 2 April 2014 (EDT)






This program deals with text files, writing and reading files, and using Python to process files.


Problem #1


Write a program called hw9a.py that reformats text files and rewraps the text in it to a specified width.

Here is an example. Assume you have a text file called CNN.txt that contains this text (taken from Google news on 4/2/14):

Washington (CNN) -- If you're rich and want to give money to a lot of political campaigns, the Supreme Court ruled Wednesday that you can. The 5-4 ruling eliminated limits on how much money people can donate in total in one election season. However, the decision left intact the current $5,200 limit on how much an individual can give to any single candidate during a two-year election cycle. Until now, an individual donor could give up to $123,200 per cycle.

Let's assume that the program is set to rewrap the text in the file to a width of 30 characters, here is what it would write back in the file, after having read it:

Washington (CNN) -- If you're
rich and want to give money to
a lot of political campaigns,
the Supreme Court ruled
Wednesday that you can. The
5-4 ruling eliminated limits
on how much money people can
donate in total in one
election season. However, the
decision left intact the
current $5,200 limit on how
much an individual can give to
any single candidate during a
two-year election cycle. Until
now, an individual donor could
give up to $123,200 per cycle.


If the program had been set to wrap at 10, this is what it would have stored in the file:

Washington
(CNN) --
If you're
rich and
want to
give money
to a lot
of
political
campaigns,
the
Supreme
Court
ruled
Wednesday
that you
can. The
5-4 ruling
eliminated
limits on
how much
money
people can
donate in
total in
one
election
season.
However,
the
decision
left
intact the
current
$5,200
limit on
how much
an
individual
can give
to any
single
candidate
during a
two-year
election
cycle.
Until now,
an
individual
donor
could give
up to
$123,200
per cycle.


Requirements


  • Your program should ask for the name of the file to be rewrapped.
  • Your program should ask next for the width at which to wrap the text inside the file. The file name can be a full path or a relative path. Here is an example where the user input is underlined.
 Please enter the file name: CNN.txt
 Please enter the wrapping width: 30
 CNN.txt has been rewrapped at the 30 characters.
  • Your program should then open the text file, read its contents, rewrap it to the specified length, and write it back to the file.
  • The length of a line in the rewrapped text should be less than or equal to the specified width (this is important and you will lose points if your program wraps lines at a width strictly less than the specified length.
  • If the text contain words that are longer than the specified wrapping width, they should not be skipped, and included in the wrapped text. For example, here's the contents of the file if the wrapping width is specified to be 9, which is less than the length of some words.


Washington
(CNN) --
If you're
rich and
want to
give
money to
a lot of
political
campaigns,
the
Supreme
Court
ruled
Wednesday
that you
can. The
5-4
ruling
eliminated
limits on
how much
money
people
can
donate in
total in
one
election
season.
However,
the
decision
left
intact
the
current
$5,200
limit on
how much
an
individual
can give
to any
single
candidate
during a
two-year
election
cycle.
Until
now, an
individual
donor
could
give up
to
$123,200
per
cycle.


Problem #2


Same idea as for Problem 1, but this time your program will take the contents of a text file (whose name is provided by the user), a width (also provided by the user), and it will rewrap the text and store it back in the file formatted as two columns of text. Each column is at most the width specified by the user.

Here are the contents of my CNN.txt file processed by hw9b.py for a column width of 20:


Washington (CNN) -- If you're  election season. However, the 
rich and want to give money to decision left intact the      
a lot of political campaigns,  current $5,200 limit on how   
the Supreme Court ruled        much an individual can give to
Wednesday that you can. The    any single candidate during a 
5-4 ruling eliminated limits   two-year election cycle. Until
on how much money people can   now, an individual donor could
donate in total in one         give up to $123,200 per cycle.




The same original CNN.txt file rewrapped in columns of width 40:


Washington (CNN) -- If you're rich and   left intact the current $5,200 limit on 
want to give money to a lot of political how much an individual can give to any  
campaigns, the Supreme Court ruled       single candidate during a two-year      
Wednesday that you can. The 5-4 ruling   election cycle. Until now, an individual
eliminated limits on how much money      donor could give up to $123,200 per     
people can donate in total in one        cycle.                                  
election season. However, the decision




And now for a width of 20:


Washington (CNN) --  However, the        
If you're rich and   decision left intact
want to give money   the current $5,200  
to a lot of          limit on how much an
political campaigns, individual can give 
the Supreme Court    to any single       
ruled Wednesday that candidate during a  
you can. The 5-4     two-year election   
ruling eliminated    cycle. Until now, an
limits on how much   individual donor    
money people can     could give up to    
donate in total in   $123,200 per cycle. 
one election season.




Requirements

  • The gap between the two columns is 1 space
  • If the number of lines in the two columns is different, then make the first column the longer of the two.
  • The difference between the number of lines in the two columns is at most one line.
  • You may assume that the width specified by the user will always be larger than or equal to the length of the longest word.
  • Your program will ask the name of the file first, then the width of the first column, and then it will rewrap the file, overwriting the file with the two columns of text.

Submission


Submit the programs to this URL: http://cs.smith.edu/~thiebaut/111b/submit9.php