x-kom hosting

Pomoc C

anonim 20991
utworzono
utworzono (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 przez anonim 20991

Matematyk0
komentarz
komentarz (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 przez Matematyk0
  • Dobra wypowiedź 1
anonim 20991
komentarz
komentarz
#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
komentarz
#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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.