Lec15-CS110 Computational Engineering

220 views
111 views

Published on

A keynote on Problem Solving using Computers

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
220
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lec15-CS110 Computational Engineering

  1. 1. Data I/O Lecture 15 February 11, 2008
  2. 2. Lab • Lab starts next week again • State in your feedback form if you need a shift from the current allocated day along with reason. Write your roll number in this case. • Shift is permitted only if you have to participate in other IIT M certified activity. • Current allocation – – – – – RFID 1 - 60 (Mon) RFID 61-120 (Tue) RFID 121-180 (Wed) RFID 181-240 (Thurs) RFID 241-300 (Fri)
  3. 3. Lab • NO MORE RE-ALLOCATION POSSIBLE AFTER TODAY.
  4. 4. printf() function • printf(control string, arg1, arg2,…,argn)
  5. 5. printf() %c - single character %d - decimal integer %e - Floating point %f - Floating point %i - decimal, hexadecimal or octal integer %o - octal integer
  6. 6. printf() %s - String %u - unsigned decimal %X - hexadecimal
  7. 7. Small issues #include <stdio.h> main() { char item[20]; int partno; float cost; printf(“%s %d %f”,item,partno,cost); // printf(“%s%d%f”,item,partno,cost); }
  8. 8. Small issues #include <stdio.h> main() { double x = 5000.0, y = 0.0025; printf(“%f %f %fn”,x,y,x*y); printf(“%e %e %en”,x,y,x*y); } 5000.000000 0.002500 12.500000 5.000000e+03 2.500000e-03 1.250000e+01
  9. 9. Small issues #include <stdio.h> main() { /*minimum field width specifications */ int i = 12345; float x = 345.678; printf(“%3d %8dn”,i,i); printf(“%3f %13fn”,x,x); printf(“%3e %16en”,x,x); } 12345 bbb12345 345.678000 bbb345.678000 3.456780e+02 bbbb3.456780e+02
  10. 10. Small issues #include <stdio.h> main() { /*minimum field width specifications */ float x = 345.678; printf(“%3g %13gn”,x,x); } 345.678 bbbbbb345.678 %g - shortest of the %f and %e representations.
  11. 11. Small issues #include <stdio.h> main() { /*Floating point precision */ float x = 123.456; printf(“%7f %7.3f %7.1fn”,x,x,x); } Rounding 123.4560000 123.456 bb123.5
  12. 12. Small issues #include <stdio.h> main() { /*Floating point precision */ float x = 123.456; printf(“%12e %12.5e %12.3en”,x,x,x); } Rounding 1.234560e+02 1.23456e+02 bbb1.235e+02
  13. 13. Small issues #include <stdio.h> main() { /*Floating point precision */ float x = 123.456; printf(“%e %.5e %.3en”,x,x,x); } Rounding and no leading blank spaces 1.234560e+02 1.23456e+02 1.235e+02
  14. 14. Small issues #include <stdio.h> main() { /*String precision */ char ln[12]; …… printf(“%10s %15s %15.5s %.5s”,ln,ln,ln,ln); } Let ln be hexadecimal; always right justified. hexadecimal bbbbhexadecimal bbbbbbbbbbhexad hexad
  15. 15. Interesting stuffs #include <stdio.h> main() { short a,b; long c,d; …… printf(“%5hd %6hx %8lo %lu”,a,b,c,d); } Minimum field width specification for int datatypes.
  16. 16. Interesting stuffs #include <stdio.h> main() { /* Uppercase conversion */ int a = 0x80ec; float b = 0.3e-12; printf(“%4x %10.2en”,a,b); printf(“%4X %10.2En”,a,b); } 80ec 3.00e-13 80EC 3.00E-13
  17. 17. Interesting Prefixes • - means left justified • + means + should appear before positive numbers • 0 means leading zeros instead of blanks • ‘ ‘ means blanks space before positive values • # in front of octal and hex mean print 0 and 0x in front respectively. • # in front of e-, f-, g- mean put a decimal point even if whole number
  18. 18. A sample program #include<stdio.h> main() { int j = 123; printf(“%6dn”,j); printf(“%-6dn”,j); printf(“%+6dn”,j); printf(“%-+6dn”,j); } bbb123 123bbb bb+123 +123 //The same for justifying strings
  19. 19. The gets() and puts() • Reads till end-of-line character #include<stdio.h> main() { char line[80]; gets(line); puts(line); }
  20. 20. The fprintf() • Similar to printf() but uses a file pointer • Similarly – fgets(fpt,..); fputs(fpt,..); – ch = getc(fpt); putc(ch,fpt); • fclose(fpt); versus fcloseall();
  21. 21. Binary files • fopen(“…”,”rt”); open for read as text and is default, the suffix “t” is not needed – Equivalent to fopen(…,”r”); • fopen(“…”, “rb”); open for read as binary – You may use the fwrite() command on this file
  22. 22. Binary files • Advantage is as follows – Four digit integers need 2 bytes – fprintf() etc. stores it in TEXT form - so 4 bytes – fwrite() stores in binary form - 2 bytes on a file opened in binary write mode – 50% space savings - assume it stores one million numbers.
  23. 23. A sample program #include<stdio.h> main() { FILE *fp; int I; if ((fp=fopen(“binval.dat”,”wb”)) == NULL) printf(“n ERRORn”); else { for (I = 10001; I <= 11000; I++) fwrite(&I, sizeof(int), 1, fp); } fclose(fp); }
  24. 24. Creative Question • Given a Black box that takes as input two lower triangular matrices and outputs the product of the same, use the black box to multiple two arbitrary square matrices.

×