Help with find highest and smallest number in a file with c


 
Thread Tools Search this Thread
Top Forums Programming Help with find highest and smallest number in a file with c
# 1  
Old 07-23-2011
Help with find highest and smallest number in a file with c

Input file:
Code:
#data_1
AGDG
#data_2
ADG
#data_3
ASDDG
DG
#data_4
A

Desired result:
Code:
Highest 7
Slowest 1

code that I try but failed to archive my goal Smilie
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXLINES        32768


int lines[MAXLINES];
int line_count = 0;

int qsort_cmp(const void *p1, const void *p2)
{
        return (*(int *)p2 - *(int *)p1);
}

int main(int argc, char**argv)
{
        FILE *fh;
        char buf[4096];

        int l, largestNum, smallestNum;

        if (argc != 2)
        {
                printf("Usage: %s <input file>\n", argv[0]);
                return -1;
        }

        if ((fh = fopen(argv[1], "r")) == NULL)
        {
                perror("fopen");
                return -1;
        }

        while (fgets(buf, sizeof(buf), fh))
        {
                int len = strlen(buf);
                /* strip newline at end */
                buf[--len] = 0;
                /* new content block */
                if (buf[0] == '#') {
                        lines[++line_count] = 0;
                        continue;
                }
                /* keep record */
                lines[line_count] += len;
        }
        largestNum = lines[0];
        smallestNum = lines[0];
        for (l = 1; l < line_count; l++)
{

        if (lines[l] > largestNum)
        {
        largestNum = lines[l];
    printf("Highest %d\n", largestNum);
        }
        else if (lines[l] < smallestNum)
        {
        smallestNum = lines[l];
    printf("Smallest %d\n", smallestNum);
return 0;
        }

        }
}

When reading the input file, calculate the length of each "#".
From the above input file, the length is 4,3,7,1.
Thus, highest number is 7 and smallest is 1.
Many thanks for any advice Smilie
# 2  
Old 07-23-2011
Try this.
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int largest = 0;
int smallest = 4096;


int main(int argc, char**argv)
{
    FILE *fh;
    char buf[4096];
    int l, largestNum, smallestNum;
    int len = 0;

    if (argc != 2)
    {
        printf("Usage: %s <input file>\n", argv[0]);
        return -1;
    }

    if ((fh = fopen(argv[1], "r")) == NULL)
    {
        perror("fopen");
        return -1;
    }

    while (fgets(buf, sizeof(buf), fh))
    {
        if (buf[0] != '#') {
            len += (strlen(buf) - 1);
        } else if (len > 0) {
            if ( len > largest) largest = len;
            if ( len < smallest) smallest = len;
            len = 0;
        }
    }

    if (len > 0 ) {
       if (len > largest) largest = len;
       if (len < smallest) smallest = len;
    }

    printf("Highest %d\n", largest);
    printf("Smallest %d\n", smallest);

    return 0;
}

There are more elegant ways of doing this but I have kept it simple and omitted boundary checks and suchlike so that you should be able to understand the logic.
This User Gave Thanks to fpmurphy For This Post:
# 3  
Old 07-24-2011
Thanks, fpmurphy
Your program work fine Smilie
I just a bit confusing about the following code, need your advice:
Code:
len += (strlen(buf) -1);

Can I know what is the logic and explanation that you decide to set it as "-1"?
Will your program give difference length calculation if the length content "\n" or "\r"?
eg.
Code:
#data_3
ASDDG
DG
#data_3
ASDDGDG

Many thanks again Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to write program that find winner who choose the smallest number. UNIX process?

In the game of “Unique”, multiple players privately choose an integer. They then reveal their choice. The winner is the player who chose the smallest unique number. The game is considered a draw if no unique integer was chosen. You would write a program that simulate such a game according to the... (1 Reply)
Discussion started by: dantesma
1 Replies

2. Shell Programming and Scripting

Print smallest negative number with corresponding index from a column

considering the following table: ID col1 col2 col3 col4 1 -16.06801249 13.49785832 -56.57087607 -27.00500526 2 -1.53315720 0.71731735 -42.03602078 -39.78554623 3 -1.53315190 0.71731587 -42.03601548 ... (3 Replies)
Discussion started by: Birda
3 Replies

3. Shell Programming and Scripting

Find highest number - working but need help!

Hello all, I am new to this and need some help or maybe steer me to the right direction! I wrote a script to get the highest number and prints it on the screen, the script basically asks the user to input numbers, and then prints the highest number! very simple it works like this $sh max.sh... (8 Replies)
Discussion started by: unknownsolo
8 Replies

4. Shell Programming and Scripting

the smallest number from 90% of highest numbers from all numbers in file

Hello All, I am having problem to find what is the smallest number from 90% of highest numbers from all numbers in file. I am having file with thousands of lines and hundreds of columns. I am familiar mainly with bash but I am open to whatever suggestion witch will lead to the solutions. If I... (11 Replies)
Discussion started by: Apfik
11 Replies

5. Shell Programming and Scripting

Bash, finding highest number in another file

i have a problem i am working on and am completely new to bash commands. I writing a script to read another file and output the max and Min number in the script. I must use variables to output the max and min numbers. grades = file with numbers in them. This is what i got so far. Thank You in... (3 Replies)
Discussion started by: ctanner10126
3 Replies

6. Shell Programming and Scripting

Displaying lines of a file which have the highest number?

Hello Wondering if anybody may be able to advise on how I can filter the contents of the following file: <object_name>-<version> <Instance> GM_GUI_code.fmb-4 1 GM_GUI_code.fmb-5 1 GM_GUI_code.fmx-4 ... (7 Replies)
Discussion started by: Glyn_Mo
7 Replies

7. Shell Programming and Scripting

Finding line with highest number in a file

Hi All, My file looks some thing like this, File 1: - A 10 B 30 C 5 D 25 E 72 F 23 now my requirement is to find the line with highest number in it, i;e the result should be E 72 Thanks in Advance (1 Reply)
Discussion started by: balu_puttaganti
1 Replies

8. UNIX for Dummies Questions & Answers

How to print largest and smallest number.

Hey. This is pretty easy stuff but I'm learning the basics of Unix at the moment so keep that in mind. I have to: 1) Write a C-shell script to monitor user activity on the server for 13 minutes. 2) Then print the smallest and largest number of users during these 13 minutes. I have this: 1)... (2 Replies)
Discussion started by: amp10388
2 Replies

9. Shell Programming and Scripting

checking the smallest and largest number

Hi All, My script is reading a log file line by line log file is like ; 19:40:22 :INFO Total time taken to Service External Request---115ms 19:40:25 DEBUG : Batch processed libdaemon.x86_64 0-0.10-5.el5 - u 19:40:22 INFO Total time taken to Service External Request---20ms 19:40:24... (4 Replies)
Discussion started by: subin_bala
4 Replies

10. Shell Programming and Scripting

find the highest number in the file

Hi, I have a file a.txt and it has values in it Eg :- I need to read through the file and find the number that is the greatest in them all. Can any one assit me on this. Thanks (30 Replies)
Discussion started by: systemali
30 Replies
Login or Register to Ask a Question