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