Imho that solution should be used for both static and dynamic cases. It's not advisable to create a 1000 element array on the stack and end up using only a small portion of it. Knowledge of sizeof operator is even more important if the code was accepting user input from the keyboard because in that scenario calls to malloc() printf() and fgets() have to be interleaved together in order to fill up a single empRec structure though its size should be known beforehand.
I agree with static cases when the total number of structs inside employee is known and sizeof() returns the whole size of the array so if we want to know the number of entries we just have to divide sizeof(employee) for sizeof(struct empRec). But in dynamic cases when the user wishes to add more entries in employee array struct, if the array (employee) is bigger (1000 structs) than the number of entries (struct empRec) it has, sizeof() will not help to determine the number of entries because it will give us the size of those 1000 structs and we just want to know those we're using. Also if pointers/malloc() are used, sizeof() won't be of any help I guess.
In this case, if we would want to add a few more entries dynamically we could not determine the number of existing entries (5) using sizeof(), because sizeof(employee) is the same as saying sizeof(struct empRec)*10.
This is why I was advising the original poster to use a NULL/empty struct reference as the final entry so the number of entries could be calculated by counting structs until an empty one was found.
I also agree that having 1000 entries is far too much, but I was not arguing about that. Anyway, how do you use sizeof() in dynamic cases?
I have to write an script for..
CUST: 123 trans:
some contents
CUST: 1234 trans:
some contents
Now wat i have to do is this:
CUST:123 akash trans:
some contents
CUST:1234 akash1 trans:
I have been able to add... (3 Replies)
I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it.
i have written like follows:
#!/bin/ksh
DSTAMP=$(date +"%y%m%d%H%M")
rm $CA_OUT_PATH/ftp_logs/temp
touch $CA_OUT_PATH/ftp_logs/temp
chmod 777... (1 Reply)
I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it.
i have written like follows:
#!/bin/ksh
DSTAMP=$(date +"%y%m%d%H%M")
rm $CA_OUT_PATH/ftp_logs/temp
touch $CA_OUT_PATH/ftp_logs/temp
chmod 777... (1 Reply)
I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it.
i have written like follows:
#!/bin/ksh
DSTAMP=$(date +"%y%m%d%H%M")
rm $CA_OUT_PATH/ftp_logs/temp
touch $CA_OUT_PATH/ftp_logs/temp
chmod 777... (13 Replies)
i thought about to use the commands : wc and sort and mybe more ..
i need to write a bash script that recive a list of varuables
kaka pele ronaldo beckham zidane messi rivaldo gerrard platini
i need the program to print the longest word of the list.
word in the output appears on a separate... (1 Reply)
i thought about to use the commands : wc and sort cut and mybe more ..
i need to write a bash script that recive a list of varuables
kaka pele ronaldo beckham zidane messi rivaldo gerrard platini
i need the program to print the longest word of the list.
word in the output appears on a... (0 Replies)
Discussion started by: yairpg
0 Replies
LEARN ABOUT REDHAT
strsyl
STRSYL(l) ) STRSYL(l)
NAME
STRSYL - solve the real Sylvester matrix equation
SYNOPSIS
SUBROUTINE STRSYL( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO )
CHARACTER TRANA, TRANB
INTEGER INFO, ISGN, LDA, LDB, LDC, M, N
REAL SCALE
REAL A( LDA, * ), B( LDB, * ), C( LDC, * )
PURPOSE
STRSYL solves the real Sylvester matrix equation:
op(A)*X + X*op(B) = scale*C or
op(A)*X - X*op(B) = scale*C,
where op(A) = A or A**T, and A and B are both upper quasi- triangular. A is M-by-M and B is N-by-N; the right hand side C and the solution
X are M-by-N; and scale is an output scale factor, set <= 1 to avoid overflow in X.
A and B must be in Schur canonical form (as returned by SHSEQR), that is, block upper triangular with 1-by-1 and 2-by-2 diagonal blocks;
each 2-by-2 diagonal block has its diagonal elements equal and its off-diagonal elements of opposite sign.
ARGUMENTS
TRANA (input) CHARACTER*1
Specifies the option op(A):
= 'N': op(A) = A (No transpose)
= 'T': op(A) = A**T (Transpose)
= 'C': op(A) = A**H (Conjugate transpose = Transpose)
TRANB (input) CHARACTER*1
Specifies the option op(B):
= 'N': op(B) = B (No transpose)
= 'T': op(B) = B**T (Transpose)
= 'C': op(B) = B**H (Conjugate transpose = Transpose)
ISGN (input) INTEGER
Specifies the sign in the equation:
= +1: solve op(A)*X + X*op(B) = scale*C
= -1: solve op(A)*X - X*op(B) = scale*C
M (input) INTEGER
The order of the matrix A, and the number of rows in the matrices X and C. M >= 0.
N (input) INTEGER
The order of the matrix B, and the number of columns in the matrices X and C. N >= 0.
A (input) REAL array, dimension (LDA,M)
The upper quasi-triangular matrix A, in Schur canonical form.
LDA (input) INTEGER
The leading dimension of the array A. LDA >= max(1,M).
B (input) REAL array, dimension (LDB,N)
The upper quasi-triangular matrix B, in Schur canonical form.
LDB (input) INTEGER
The leading dimension of the array B. LDB >= max(1,N).
C (input/output) REAL array, dimension (LDC,N)
On entry, the M-by-N right hand side matrix C. On exit, C is overwritten by the solution matrix X.
LDC (input) INTEGER
The leading dimension of the array C. LDC >= max(1,M)
SCALE (output) REAL
The scale factor, scale, set <= 1 to avoid overflow in X.
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
= 1: A and B have common or very close eigenvalues; perturbed values were used to solve the equation (but the matrices A and B are
unchanged).
LAPACK version 3.0 15 June 2000 STRSYL(l)