anonim 20991 utworzono 24 stycznia 2017 utworzono 24 stycznia 2017 (edytowane) witam Potrzebuje pomocy przy tym kodzie tak aby liczył sumę elementów tablicy jak to zrobić ? #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #define MAX 50 void Generuj(int *, int, int); //tablica, ilosc liczb w tablicy, ogranicznik void Wypisz(int *, int); //Wypisuje tablice int main() { int t[MAX], i,n,z; printf("Podaj ilosc elementow tablicy: "); scanf("%d",&n); printf("Podaj zakres elementow tablicy: "); scanf("%d", &z); if(n > MAX) { printf("Przekroczony rozmiar tablicy\n"); return -1; } //Wywolanie funkcji Generuj(t, n, z); Wypisz(t,n); } void Wypisz(int *b, int ile) { int i; for(i = 0; i < ile; i++) printf("%d\n", b); //b <=> *(b+i) } void Generuj(int *a, int ilosc, int zakres){ int j; srand(time(NULL)); for(j = 0; j < ilosc; j++) a[j] = (rand()%zakres)-(zakres-10); //a[j] <=> *(a+j) } Godzinę temu, anonim 20991 napisał: Edytowane 24 stycznia 2017 przez anonim 20991
Matematyk0 komentarz 24 stycznia 2017 komentarz 24 stycznia 2017 (edytowane) Rzecz nr 1 - następnym, razem wstaw ko programu jako kod - o wiele łatwiej będzie się czytać. 2. void Wypisz(int *b, int ile) { int i; for(i = 0; i < ile; i++) printf("%d\n", *(b+i)); //b <=> *(b+i) } W printf musisz dodać gwiazdkę przy b, tak jak napisałem - inaczej wyświetlasz adres b, nie zawartość b. Dodatkowo wypisujesz tylko pierwszy element tablicy - zapomniałeś o przesunięciu - *(b+i). 3. Jeżeli chcesz policzyć sumę elementów tablicy, najłatwiej będzie zmienić deklarację tablicy na: int t[MAX] = {0}; Dzięki temu każdy element tablicy będzie na początku równy 0. Wtedy można napisać funkcję: int Suma(int *tablica) { int suma = 0; for (int i = 0; i < MAX; i++) { suma += *(tablica+i); } return suma; } A program można by było bardzo łatwo uprościć i pozbyć się konieczności stosowania wskaźników, gdyby przenieść deklarację tablicy nad maina - wtedy zawsze operowałbyś na oryginale i nie musiałbyś podawać adresu tablicy/tablicy jako parametr funkcji. Edytowane 24 stycznia 2017 przez Matematyk0 1
anonim 20991 komentarz 25 stycznia 2017 Autor komentarz 25 stycznia 2017 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #define MAX 50 void Generuj(int *, int, int); //tablica, ilosc liczb w tablicy, ogranicznik void Wypisz(int *, int); //Wypisuje tablice int main() { int t[MAX] = {0}, i, n, z; printf("Podaj ilosc elementow tablicy: "); scanf("%d",&n); printf("Podaj zakres elementow tablicy: "); scanf("%d", &z); if(n > MAX) { printf("Przekroczony rozmiar tablicy\n"); return -1; } int Suma(int *tablica) { int suma = 0; for (int i = 0; i < MAX; i++) { suma += *(tablica+i); } return suma; } //Wywolanie funkcji Generuj(t, n, z); Wypisz(t,n); printf("\n\nSuma elementow w tablicy wynosi: %d", Suma(*t)); } void Wypisz(int *b, int ile) { int i; for(i = 0; i < ile; i++) printf("%d\n", *(b+i)); //b <=> *(b+i) //Generujemy losowe liczby za pomoca funkcji Generuj } void Generuj(int *a, int ilosc, int zakres) { int j; srand(time(NULL)); for(j = 0; j < ilosc; j++) a[j] = - rand()%zakres + rand()%zakres; //a[j] <=> *(a+j) } nie działa mi to wyskakują błędy: C:\Users\user\Desktop\c\123.c In function 'int main()': 28 1 C:\Users\user\Desktop\c\123.c [Error] a function-definition is not allowed here before '{' token 61 1 C:\Users\user\Desktop\c\123.c [Error] expected '}' at end of input
Matematyk0 komentarz 25 stycznia 2017 komentarz 25 stycznia 2017 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #define MAX 50 void Generuj(int *, int, int); //tablica, ilosc liczb w tablicy, ogranicznik void Wypisz(int *, int); //Wypisuje tablice int Suma(int *); //sumuje int main() { int t[MAX] = {0}, i, n, z; printf("Podaj ilosc elementow tablicy: "); scanf("%d",&n); printf("Podaj zakres elementow tablicy: "); scanf("%d", &z); if(n > MAX) { printf("Przekroczony rozmiar tablicy\n"); return -1; } //Wywolanie funkcji Generuj(t, n, z); Wypisz(t,n); printf("\n\nSuma elementow w tablicy wynosi: %d", Suma(*t)); } void Wypisz(int *b, int ile) { int i; for(i = 0; i < ile; i++) printf("%d\n", *(b+i)); //b <=> *(b+i) //Generujemy losowe liczby za pomoca funkcji Generuj } void Generuj(int *a, int ilosc, int zakres) { int j; srand(time(NULL)); for(j = 0; j < ilosc; j++) a[j] = - rand()%zakres + rand()%zakres; //a[j] <=> *(a+j) } int Suma(int *tablica) { int suma = 0; for (int i = 0; i < MAX; i++) { suma += *(tablica+i); } return suma; } Funkcje definiuje się albo przed mainem, albo po mainie - nigdy w środku. Jeżeli definiujesz po mainie (tak jak dwie pozostałe), najpierw, przed mainem, musisz zadeklarować funkcję. Ten kod powinien działać bez żadnych błędów. A teraz tak szczerze powiedz - tego programowania się uczysz czy tylko bezmyślnie klepiesz programy? Znasz angielski na tyle, żeby zrozumieć choć podstawowe komunikaty wyrzucane przez kompilator?
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.