Sponsored Content
Top Forums Programming Please need help with C program! Post 18538 by JJJ on Friday 29th of March 2002 01:22:06 PM
Old 03-29-2002
Data Please need help with C program!

My program only ouputs the correct magic square sum totals for the number 15.If I enter any odd number smaller than 15 my sum totals are incorrect. I have define "size" to 15. How or what do I change so that my program will output the magic square results for the odd numbers 1 through 15 without having to change the value in my "#define size 15"?Or do I need to get rid of this define statement? How do I define my array size to be the max 15 by 15. Then, input the size of the array that I want to build?

Thanks,

J.J.

Code:
#include<stdio.h>
#define size 15  

void input_square (int order, int magic[size][size])
{

     int row,column;
     int entry = 1;
	 

     printf("Enter the size of the odd Magic Square : " );
     scanf("%d",&order);
     printf ("\n");


  if ( order % 2 )  {
   
     row = 0;
     column = (order - 1) / 2;

     while (entry <= order * order) {

          magic[row][column] = entry;

          if (entry == order * (entry / order))   {
		   row++;
          }

          else     {
              row--;
              column++;

              if (row < 0)	 {	 
		   row = order - 1;
              }

              if (column > order - 1)         {
	           column = 0;
              }

          }

          entry++;

     }

     printf("Magic square appears as follows:\n");
     printf ("\n");

     for(row = 0; row < order; row++)
     {

     for (column = 0; column < order; column++)
	   printf("%4d",magic[row][column]);

     printf("\n");

     }
  }

  else  {

       printf ("\nThe number: %d is not Odd\n", order);
          printf ("\n");

  }

}

void print_sum (int order,int magic [size][size])
{

     int row, column;	 
     int magic_number;
     int count = 1;
     int count_2 = 1;

     magic_number = 0;

     for (row = 0; row < order; row++)
          magic_number += magic[row][0];	    

     for (column = 0; column < order; column++) {
			 	
          printf("\nThe Sum for Column %d is %d.\n", count, magic_number);

	  count++;
     }   			 
         
     magic_number = 0;
	 

     for (column = 0; column < order; column++) 
		 magic_number += magic[0][column];	    

     for (row = 0; row < order; row++)		 {
			 	
            printf("\nThe Sum for Row %d is %d.\n", count_2, magic_number);

	    count_2++;

     }

     magic_number = 0;

     row = 0;
     column = 0;

     while (row < order && column < order)     {

        magic_number += magic[row][column];
	row++;
	column++;

     }
              	    			 	
     printf("\nThe Sum for Diagonal from top left to bottom right is %d.\n",magic_number);

     magic_number = 0;

     row = order - 1;
     column = 0;

     while (row <= order && column < order)    {

        magic_number += magic[row][column];
	row--;
	column++;
      }
	    
			 	
     printf("\nThe Sum for Diagonal from bottom left to top right is %d.\n",magic_number);
     printf("\n");

     magic_number = 0;

}



main()
{
     
         int order = size;
	 int magic[size][size];
   
	 input_square (order, magic);
	 print_sum (order, magic); 
 
}


Last edited by PxT; 03-29-2002 at 04:36 PM..
 

10 More Discussions You Might Find Interesting

1. Programming

executing a program within a program

Read the title: how do i do it? (4 Replies)
Discussion started by: Gekko
4 Replies

2. Programming

How to write to stdin of another program (program A -> [stdin]program B)

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question: ---------... (1 Reply)
Discussion started by: vvaidyan
1 Replies

3. UNIX for Dummies Questions & Answers

How to write to stdin of another program (program A -> [stdin]program B)

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question: ---------... (3 Replies)
Discussion started by: vvaidyan
3 Replies

4. Programming

A program to trace execution of another program

Hi, I wanted to know if i can write a program using switches and signals, etc to trace execution of other unix program which calls c program internally. If yes how? If not with signals and switches then are there any other methods apart from debugging with gdb/dbx. (3 Replies)
Discussion started by: jiten_hegde
3 Replies

5. UNIX for Dummies Questions & Answers

Script to open program and send/execute command in program

Hi, i want to write a script that executes a program (exec?) . this program then requires a filename as input. how do i give it this input in the script so the program will be complete run and close by the script. e.g. exec prog.exe program then asks for filename "enter filename:"... (1 Reply)
Discussion started by: tuathan
1 Replies

6. Programming

Program

Hi guys I so upset today i have this question about socket and i made the program do you know what wrong with it this the question : Write one TCP socket program (named webclient.cpp) to simulate a web browser by using HTTP/1.1. The client should take three... (1 Reply)
Discussion started by: Net Star
1 Replies

7. Programming

Python program faster than C++ program.

I wrote a simple program that generates a random word 10,000,000 times. I wrote it in python, then in C++ and compared the two completion times. The python script was faster! Is that normal? Why would the python script be faster? I was under the impression that C++ was faster. What are some of... (2 Replies)
Discussion started by: cbreiny
2 Replies

8. Programming

Calling c program from another c program

Hi All, Probably this is a repeated question. My knowledge in this is limited and i got confused on all those materials i got in google search. We use #include <> to include a predefined library like stdio.h i saw somewhere that #include "" includes a man made module(another C program). IS... (2 Replies)
Discussion started by: jisha
2 Replies

9. Homework & Coursework Questions

Calling compiled C program with Perl program

Long story short: I'm working inside of a Unix SSH under a bash shell. I have to code a C program that generates a random number. Then I have to call the compiled C program with a Perl program to run the C program 20 times and put all the generated random #s into a text file, then print that text... (1 Reply)
Discussion started by: jdkirby
1 Replies

10. Shell Programming and Scripting

Perl program get a response before the program quits

I created a program, so a kid can practice there math on it. It dispenses varies math problems and the kid must input an answer. I also want it to grade the work they have done, but I can't find the best place for it to print out the grade. I have: if ( $response =~ m/^/ ) { $user_wants_to_quit... (1 Reply)
Discussion started by: germany1517
1 Replies
AC(1)							      General Commands Manual							     AC(1)

NAME
ac - print statistics about users' connect time SYNOPSIS
ac [ -d | --daily-totals ] [ -y | --print-year ] [ -p | --individual-totals ] [ people ] [ -f | --file filename ] [ -a | --all-days ] [ --complain ] [ --reboots ] [ --supplants ] [ --timewarps ] [ --compatibility ] [ --tw-leniency num ] [ --tw-suspicious num ] [ -z | --print-zeros ] [ --debug ] [ -V | --version ] [ -h | --help ] DESCRIPTION
ac prints out a report of connect time (in hours) based on the logins/logouts in the current wtmp file. A total is also printed out. The accounting file wtmp is maintained by init(8) and login(1). Neither ac nor login creates the wtmp if it doesn't exist, no accounting is done. To begin accounting, create the file with a length of zero. NOTE: The wtmp file can get really big, really fast. You might want to trim it every once and a while. GNU ac works nearly the same u*x ac, though it's a little smarter in several ways. You should therefore expect differences in the output of GNU ac and the output of ac's on other systems. Use the command info accounting to get additional information. OPTIONS
-d, --daily-totals Print totals for each day rather than just one big total at the end. The output looks like this: Jul 3 total 1.17 Jul 4 total 2.10 Jul 5 total 8.23 Jul 6 total 2.10 Jul 7 total 0.30 -p, --individual-totals Print time totals for each user in addition to the usual everything-lumped-into-one value. It looks like: bob 8.06 goff 0.60 maley 7.37 root 0.12 total 16.15 people Print out the sum total of the connect time used by all of the users included in people. Note that people is a space separated list of valid user names; wildcards are not allowed. -f, --file filename Read from the file filename instead of the system's wtmp file. --complain When the wtmp file has a problem (a time-warp, missing record, or whatever), print out an appropriate error. --reboots Reboot records are NOT written at the time of a reboot, but when the system restarts; therefore, it is impossible to know exactly when the reboot occurred. Users may have been logged into the system at the time of the reboot, and many ac's automatically count the time between the login and the reboot record against the user (even though all of that time shouldn't be, perhaps, if the system is down for a long time, for instance). If you want to count this time, include the flag. *For vanilla ac compatibility, include this flag.* --supplants Sometimes, a logout record is not written for a specific terminal, so the time that the last user accrued cannot be calculated. If you want to include the time from the user's login to the next login on the terminal (though probably incorrect), include this you want to include the time from the user's login to the next login on the terminal (though probably incorrect), include this flag. *For vanilla ac compatibility, include this flag.* --timewarps Sometimes, entries in a wtmp file will suddenly jump back into the past without a clock change record occurring. It is impossible to know how long a user was logged in when this occurs. If you want to count the time between the login and the time warp against the user, include this flag. *For vanilla ac compatibility, include this flag.* --compatibility This is shorthand for typing out the three above options. -a, --all-days If we're printing daily totals, print a record for every day instead of skipping intervening days where there is no login activity. Without this flag, time accrued during those intervening days gets listed under the next day where there is login activity. --tw-leniency num Set the time warp leniency to num seconds. Records in wtmp files might be slightly out of order (most notably when two logins occur within a one-second period - the second one gets written first). By default, this value is set to 60. If the program notices this problem, time is not assigned to users unless the --timewarps flag is used. --tw-suspicious num Set the time warp suspicious value to num seconds. If two records in the wtmp file are farther than this number of seconds apart, there is a problem with the wtmp file (or your machine hasn't been used in a year). If the program notices this problem, time is not assigned to users unless the --timewarps flag is used. -y, --print-year Print year when displaying dates. -z, --print-zeros If a total for any category (save the grand total) is zero, print it. The default is to suppress printing. --debug Print verbose internal information. -V, --version Print the version number of ac to standard output and quit. -h, --help Prints the usage string and default locations of system files to standard output and exits. FILES
wtmp The system wide login record file. See wtmp(5) for further details. AUTHOR
The GNU accounting utilities were written by Noel Cragg <noel@gnu.ai.mit.edu>. The man page was adapted from the accounting texinfo page by Susan Kleinmann <sgk@sgk.tiac.net>. SEE ALSO
login(1), wtmp(5), init(8), sa(8) 2010 August 16 AC(1)
All times are GMT -4. The time now is 11:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy