Click here to Skip to main content
15,887,485 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi, i have to do the following thing.
Make a program in Pascal that after has read a text with a list of nums., it will return the numb. of the nums that appear less than one times in the text.

The text that will be read from the program should be like that.

In the first line there are two nums. seperated by a space, n and m. N is the number of nums that exist, like if the text contains the numbers 1,2,3,4, n is 4 (1..n). M is how many lines follow. Every line has a couple of nums, a,b, (1=<a=<n), (1=<b=<n) (a<>b) a and b are separated by a space.

The file that the program will make will have written on it a num., that says how many nyms are appeared less than two tims in the text.

All the nums. are Integer.

0=<p=<n

I have finished it, but the problem is that at the new text that p has to be written, p is always 1, For me the problem is at the place that i have the bold letters, it might be because i in count and i in a arrays are different, how can i correct this???
Thank you in advance.



program MyProgr;
        
        var
                F: text;
                t:Textfile;
                a,count:array of Integer;
                b:Integer;
                i,int:Integer;
                countnums:Integer;
                n,m:String;
                lin,nums:Integer;
                Small,Big:Integer;
        
        procedure DoWhatEver(S: string);
        begin
        val(s,int);
        Write(s,'     ');
        for i:=Small to Big do
        if (a[i]=int) then
        count[i]:=count[i]+1;
        end;
        
        procedure FilltheArray;
        begin
        for i:=Small to Big do
        a[i]:=i+1 ;
        end;
        
        
        
        
        
        
        
        procedure ProcessString;
        var
                Strng, S: string;
                Last, P: integer;
        begin
                readln(F,Strng);
                Last:=0;
                while Last<length(Strng) do
                begin
                        P:=Last+1;
                        while (P<=length(Strng)) and (Strng[P]<>' ') do
                                inc(P);
                        S:=copy(Strng,Last+1,(P-Last-1));
                        DoWhatEver(S);
                        Last:=P;
                end
        end;
        
        
        
        
        
        procedure ProcessStringA;
        var
                Strng: string;
                Last, P: integer;
        begin
                readln(F,Strng);
                Last:=0;
                while Last<length(Strng) do
                begin
                        P:=Last+1;
                        while (P<=length(Strng)) and (Strng[P]<>' ') do
                                inc(P);
                        n:=copy(Strng,Last+1,(P-Last-1));
                        Val(n,nums);
                        Last:=P;
                end
        end;
        
        
        
        
        
        
        
        procedure ProcessStringB;
        var
                Strng: string;
                Last, P: integer;
        begin
                readln(F,Strng);
                Last:=0;
                while Last<length(Strng) do
                begin
                        P:=Last+1;
                        while (P<=length(Strng)) and (Strng[P]<>' ') do
                                inc(P);
                        m:=copy(Strng,Last+1,(P-Last-1));
                        Val(m,lin);
                        Last:=P;
                end
        end;
        
        
        
        
        
        
        begin
                assign(F,'myfile.txt');
                reset(F);
                ProcessStringA;
                Writeln(nums);
                ProcessStringB;
                Writeln(lin);
                setlength(a,nums);
                Small:=Low(a);
                Big:=High(a);
                for i:= Small to big do
                count[i]:=0;
                FillTheArray;
                while not eof(F) do ProcessString;
        
                for i:=Small to Big do
                begin
                if count[i]=2 then
                countnums:=countnums+1;
                end;
                 Close(f);
                Assign(t,'fileout.txt');
                Rewrite(t);
                Writeln(t,countnums);
                close(t);
        
        
        end.
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900