matematykaszkolna.pl
Programowanie-język C Piotr: Programowanie−język C. Jak zrobić abym mógł wpisywać inne liczby oprócz cakowitych, zmienna przecinkowa ? ale jak aby działało prawidłowo? #include <stdio.h> #include <stdlib.h> #define ROZMIAR 5 int main() { int index,wynik[ROZMIAR]; int suma=0; float srednia; printf("Podaj %d wynikow gry w golfa\n",ROZMIAR); for(index=0;index<ROZMIAR;index++) scanf("%d",&wynik[index]); for(index=0;index<ROZMIAR;index++) scanf("5%d",&wynik[index]); for(index=0;index<ROZMIAR;index++) suma+=wynik[index]; srednia=(float)suma/ROZMIAR; printf("Suma wynikow = %d,srednia =%.2f\n",suma,srednia); printf("Oznacza to handicap w wysokosci %.0f.\n",srednia−72); return 0; }
12 paź 23:07
52: zamień int na double
12 paź 23:08
52: W języku C wyróżniamy następujące typy zmiennych ( wg wielkości ) : 4 podstawowe : char − jednobajtowe liczby całkowite, służy do przechowywania znaków; int− typ całkowity, o długości domyślnej dla danej architektury komputera; float − typ zmiennopozycyjny (zwany również zmiennoprzecinkowym), reprezentujący liczby rzeczywiste (4 bajty); Są dokładnie opisane w IEEE 754. double − typ zmiennopozycyjny podwójnej precyzji (8 bajtów);
12 paź 23:09
Piotr: a specyfikator to był e ? i zamienic zarówno w scanf i printf na %e
12 paź 23:15
52: Spróbuj %f to będzie jako liczba rzeczywista; jak wpiszesz %e, to będzie notacja naukowa
12 paź 23:19
Piotr: wyskakuje błąd double index,wynik[ROZMIAR]; double suma=0; float srednia; printf("Podaj %e wynikow gry w golfa\n",ROZMIAR); for(index=0;index<ROZMIAR;index++) scanf("%e",&wynik[index]); for(index=0;index<ROZMIAR;index++) scanf("5%e",&wynik[index]); for(index=0;index<ROZMIAR;index++) suma+=wynik[index]; srednia=(float)suma/ROZMIAR; printf("Suma wynikow = %e,srednia =%.2f\n",suma,srednia); printf("Oznacza to handicap w wysokosci %.0f.\n",srednia−72); return 0;
12 paź 23:19
Piotr: zara sprawdze z %f
12 paź 23:19
Piotr: error : array subscript is not an anteger
12 paź 23:21
Piotr: an integer
12 paź 23:22
52: chwila, a wcześniej to kompilowałeś i było ok ?
12 paź 23:28
Piotr: tak
12 paź 23:30
Piotr: jak int to ładnie działa
12 paź 23:30
52: Ok, a zrób tak: int index; double wynik[ROZMIAR];
12 paź 23:32
Piotr: teraz chociaz odpala ale tez nie liczy jak trzeba int main() { int index; double wynik[ROZMIAR]; double suma=0; double srednia; printf("Podaj %f wynikow gry w golfa\n",ROZMIAR); for(index=0;index<ROZMIAR;index++) scanf("%f",&wynik[index]); for(index=0;index<ROZMIAR;index++) scanf("5%f",&wynik[index]); for(index=0;index<ROZMIAR;index++) suma+=wynik[index]; srednia=(float)suma/ROZMIAR; printf("Suma wynikow = %d,srednia =%.2f\n",suma,srednia); printf("Oznacza to handicap w wysokosci %.0f.\n",srednia−72); return 0; }
12 paź 23:36
Piotr: * printf("Suma wynikow = %f,srednia =%.2f\n",suma,srednia);
12 paź 23:37
Piotr: dziwne liczby wyskakują w konsoli
12 paź 23:38
52: a co DOKŁADNIE źle liczy ?
12 paź 23:38
52: printf("Suma wynikow = %f,srednia =%f\n",suma,srednia); tak próbowałeś ?
12 paź 23:40
Piotr: wszystko, juz na samym poczatku pisze Podaj 196.......00000000000000... wynikow gry w golfa
12 paź 23:40
Piotr: to nic nie d
12 paź 23:41
Piotr: dobra jutro bede dalej probowal, dzieki za pomoc, jakbys cos wymyslil to napisz w tym watku
12 paź 23:42
52: Ja to zbytnio nie czaje tego twojego kodu... te pętle for... po co ich aż tyle ? Ogólnie z programowania to noga jestem, ale te petle to coś nie tak ... zresztą nawet nie znam polecenia co to ma robić i jak liczyć
12 paź 23:46
jc: scanf("%lf",&wynik[index]);
12 paź 23:54
Piotr: Tyle pętel bo tak standardowo się stosuje aby było zwiezle napisane. Pgrogram po wpisaniu liczb wyswietla je a nasitepnie zsumuje i liczy srednia. Specyfikator %lf pomógł i program liczy prawidłowo, tylko nie wiem czemu na samym początku wyświetla mi "Podaj 43408...00000000....wyników gry w golfa " Drugie pytanie : Czy zamiast zmiany definicji stałej można tak zrobić aby mógł wpisywać dowolną ilość liczb i z automatu mi liczyło.? #include <stdio.h> #include <stdlib.h> #define ROZMIAR 3 int main() { int index ; double wynik[ROZMIAR]; double suma=0; double srednia; printf("Podaj %lf wynikow gry w golfa\n",ROZMIAR); for(index=0;index<ROZMIAR;index++) scanf("%lf",&wynik[index]); for(index=0;index<ROZMIAR;index++) scanf("5%lf",&wynik[index]); for(index=0;index<ROZMIAR;index++) suma+=wynik[index]; srednia=(float)suma/ROZMIAR; printf("Suma wynikow = %lf,srednia =%lf\n",suma,srednia); printf("Oznacza to handicap w wysokosci %.0lf.\n",srednia−72); return 0; }
13 paź 08:53
jc: ROZMIAR jest stałą typu int. Dlatego powinieneś napisać "Podaj %d ...". W drugiej pętli chciałeś wyświetlać liczby, więc napisz printf zamiast scanf. Możesz spytać o liczbę danych, następnie czytać dane wyświetlając na ekranie, a potem wypisać średnią. main(){ int i, n; double t, s=0; scanf("%d", &n); for(i=0; i < n; i++){ scanf("%lf", &t); s + = t; } printf("średnia = %lf\n", s/n); }
13 paź 09:11
Piotr: faktycznie mój błąd, zrobiłem teraz tak,ale cos nie prawidłowo mi wyświetlają się wpisane dane #include <stdio.h> #include <stdlib.h> #define ROZMIAR 3 int main() { int index; double wynik[ROZMIAR]; double suma=0; double srednia; printf("Podaj %d wynikow gry w golfa\n",ROZMIAR); for(index=0;index<ROZMIAR;index++) scanf("%lf",&wynik[index]); printf("Odczytane wyniki to :\n"); for(index=0;index<ROZMIAR;index++) printf("%5lf",wynik[index]); printf("\n"); for(index=0;index<ROZMIAR;index++) suma+=wynik[index]; srednia=(float)suma/ROZMIAR; printf("Suma wynikow = %lf,srednia =%lf\n",suma,srednia); printf("Oznacza to handicap w wysokosci %.0lf.\n",srednia−72); return 0; }
13 paź 09:15
jc: Dopisz spację lub przejście do nowej linii (nie wiem, jak chcesz wyświetlać).
13 paź 09:22
Piotr: dobra działa, dzieki
13 paź 09:24
Dziadek Mróz: Pozwolę sobie uzupełnić temat. zmiennych jest więcej niż 4, praktycznie jest ich nieskończona ilość, zależy od wyobraźni programisty. Tak jak pisano wyżej typy podstawowe: zmienna rozmiar zamiennik format char 1B %c short 2B %hi int 2B %d size_t 2B unsigned int %u long 4B Int32_t %ld long long 8B Int64_t %lli float 4B %f double 8B long float %lf Typy złożone: wskaźnik *ptr sizeof(ptr) = 4 wskaźnik jest adresem, adres jest 4B tablica tab[SIZE] typeid(SIZE) = size_t tablica ma zakres 0 ... SIZE−1 struktura struct S kilka typów w jednym, np książka (tytuł, autor, ...)
14 paź 00:01