User Tools

Site Tools


dydaktyka:cprog:2015:basic_stdio-solutions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
dydaktyka:cprog:2015:basic_stdio-solutions [2015/10/22 08:51]
pkleczek [Interakcja z użytkownikiem - rozwiązania i odpowiedzi]
— (current)
Line 1: Line 1:
-====== Interakcja z użytkownikiem - rozwiązania i odpowiedzi ====== 
- 
-===== Treść laboratorium ===== 
- 
-==== Dlaczego wyświetlają się "​śmieci"?​ ==== 
- 
-([[http://​home.agh.edu.pl/​~pkleczek/​dokuwiki/​doku.php?​id=dydaktyka:​cprog:​2015:​basic_stdio#​wypisywanie_danych|Treść pytania]]) 
- 
-Użyto niewłaściwych specyfikatorów konwersji. Specyfikatory konwersji **nie weryfikują** zgodności typów danych, a jedynie **interpretują** przekazane dane (a więc zawartość pamięci w danym miejscu) w zadany sposób. 
- 
-Czyli: 
-  * Pierwszy ''​printf()''​ oczekuje liczby całkowitej i znaku, a dostaje dwie liczby całkowite. Za drugim razem interpretuje liczbę dziesiętną jako znak z (rozszerzonego) kodu ASCII. //Ok, ale ten zestaw znaków ma kody od 0 do 256!// Zgadza się, dlatego "​liczenie"​ zaczyna się od nowa, czyli $300 - 256 = 44$ (','​). 
-  * Za drugim razem przekazujemy liczbę całkowitą,​ którą następnie ''​printf()''​ interpretuje jako liczbę zmiennoprzecinkową. Otrzymujemy "​śmieci",​ gdyż komputer zupełnie inaczej reprezentuje w pamięci te dwa typy liczb. 
-  * Za trzecim razem mamy sytuację podobną, co przy drugim wywołaniu funkcji ''​printf()''​. 
-===== Zadania podsumowujące ===== 
- 
-==== Zadanie 1 ==== 
- 
-<code c> 
-#include <​stdio.h>​ 
-#include <​stdlib.h>​ 
- 
-int main() 
-{ 
-    double a, b, c; 
-    double suma, srednia; 
- 
-    printf("​Podaj 3 liczby rzeczywiste (oddzielone spacja): \n"); 
-    scanf("​%lf %lf %lf", &a, &b, &c); 
- 
-    suma = a + b + c; 
-    srednia = suma / 3; 
- 
-    printf("​Suma to: %.2f\n",​ suma); 
-    printf("​Srednia to: %.2f\n",​ srednia); 
- 
-    return 0; 
-} 
-</​code>​ 
- 
- 
-==== Zadanie 2 ==== 
- 
-<code c> 
-#include <​stdio.h>​ 
-#include <​stdlib.h>​ 
- 
-int main() 
-{ 
-    int usds; 
- 
-    printf("​Podaj kwote w dolarach: "); 
-    scanf("​%d",​ &usds); 
- 
-    printf("​$%d = %7.2f EUR\n",​ usds, usds * 0.77); 
-    printf("​$%d = %7.2f PLN\n",​ usds, usds * 3.04); 
- 
-    return 0; 
-} 
-</​code>​ 
- 
-==== Zadanie 3 ==== 
- 
-<code c> 
-#include <​stdio.h>​ 
-#include <​stdlib.h>​ 
- 
-int main() 
-{ 
-    char c; 
- 
-    printf("​Podaj znak: "); 
-    scanf("​%c",&​c);​ 
-    printf("​Kod ASCII znaku '​%c'​ to %d\n", c, c); 
- 
-    return 0; 
-} 
-</​code>​ 
  
dydaktyka/cprog/2015/basic_stdio-solutions.1445496717.txt.gz · Last modified: 2020/03/25 11:46 (external edit)