Wątek przeniesiony 2017-11-04 10:22 z C/C++ przez Patryk27.

Program do liczenia sumy elementów tablicy

0

Hej ;) Mam do napisania program do liczenia elementów tablicy. Sumę mam zapisać jako funkcję. Mam coś takiego:

#include <stdio.h>
#include <stdlib.h>

int suma(int x, int y);

int main(void)
{

    int n, i;
    double liczba, suma, srednia;
    suma=0;
    printf("Wprowadz rozmiar tabeli: \n");
    scanf("%i", &n);
    int t[n];
    printf("Wprowadz %i liczbe: \n", i+1);
    scanf("%lf", &t[i]);
    printf(suma(n, i));
    int suma(int x,int y)
{
      for (x=0; x<y; x++)
    {
        suma=suma+t[x];
    }
}
    return 0;
}

ale nie chce mi działać. Wyświetla się, że suma to nie funkcja. Co mam zrobić?

3

festiwal zgadywanek a nie próba zaprogramowania tego:

http://www.learn-c.org/

0

nie mozesz definiowac funkcji w funkcji. To nie javascript

0

#include <stdio.h>
#include <stdlib.h>

int suma(int x, int y);

int main(void)
{

int n, i;
double liczba, suma, srednia;
suma=0;
printf("Wprowadz rozmiar tabeli: \n");
scanf("%i", &n);
int t[n];
printf("Wprowadz %i liczbe: \n", i+1);
scanf("%lf", &t[i]);
printf("Suma= %d ", suma(n, i));
return 0;

}

int suma(int x,int y)
{
for (x=0; x<y; x++)
{
suma=suma+t[x];
}
}
Teraz jest funkcja poza funkcją main, ale dalej wyświetla się ten sam błąd. Przyznaję, jestem dopiero początkujący ;)

0

Zacznij czytać jakikiolwiek kurs C.
Wklejaj logi z błędami kompilacji.
Na pierwszy rzut oka widać, że deklarujesz zmienną i funkcję o tej samej nazwie. Proszenie sie o kłopoty.
Nazwy funkcji powinny być czasownikiem jak sumuj, a jeszcze lepiej z angielska.

2

Powinieneś mieć tak że do funkcji suma przekazujesz tablicę oraz jej rozmiar a ona zwraca sumę elementów z tablicy.
To co zrobiłeś jest co najmniej dziwne bo przekazujesz x a potem w pętli for wpisujesz x = 0 - czyli nie ważne jaka będzie przekazana wartość do funkcji i tak x = 0.

Zadbaj również o sensowne nazwy zmiennych. X, Y, T nic nikomu nie mówi - i Tobie również nie będzie nic mówiło kiedy wrócisz do kodu za tydzień lub dwa. To samo tyczy się nazw funkcji. Używaj nazw z języka angielskiego.

Oto funkcja obliczająca sumę z tablicy

int get_sum(int int_array[], int size)
{
	int sum = 0;
	for (int i = 0; i < size; i++)
	{
		sum += int_array[i];
	}
	return sum;
}

Później przekazujesz tablicę w ten oto sposób: (numbers to tablica int, size to jej rozmiar)

int sum = get_sum(numbers, size);

I tak jak kolega wyżej napisał - to nie ma być funkcja w funkcji. Ma to wyglądać mniej więcej tak:

int get_sum(int numbers[], int size);

int main(void)
{
	// ...
	int sum = get_sum(numbers, size);
	// ...
}

int get_sum(int numbres[], int size)
{
	int sum = 0;
	for (int i = 0; i < size; i++)
	{
		sum += int_array[i];
	}
	return sum;
}
0
atmal napisał(a):

Powinieneś mieć tak że do funkcji suma przekazujesz tablicę oraz jej rozmiar a ona zwraca sumę elementów z tablicy.
To co zrobiłeś jest co najmniej dziwne bo przekazujesz x a potem w pętli for wpisujesz x = 0 - czyli nie ważne jaka będzie przekazana wartość do funkcji i tak x = 0.

Zadbaj również o sensowne nazwy zmiennych. X, Y, T nic nikomu nie mówi - i Tobie również nie będzie nic mówiło kiedy wrócisz do kodu za tydzień lub dwa. To samo tyczy się nazw funkcji. Używaj nazw z języka angielskiego.

Oto funkcja obliczająca sumę z tablicy

int get_sum(int int_array[], int size)
{
	int sum = 0;
	for (int i = 0; i < size; i++)
	{
		sum += int_array[i];
	}
	return sum;
}

Później przekazujesz tablicę w ten oto sposób: (numbers to tablica int, size to jej rozmiar)

int sum = get_sum(numbers, size);

I tak jak kolega wyżej napisał - to nie ma być funkcja w funkcji. Ma to wyglądać mniej więcej tak:

int get_sum(int numbers[], int size);

int main(void)
{
	// ...
	int sum = get_sum(numbers, size);
	// ...
}

int get_sum(int numbres[], int size)
{
	int sum = 0;
	for (int i = 0; i < size; i++)
	{
		sum += int_array[i];
	}
	return sum;
}

Dzięki za pomoc i wyrozumiałość :) Wszystko działa jak należy
Oto mój program:

#include <stdio.h>
#include <stdlib.h>

int sumuj(int tablica[], int n);

int main(void)
{
    int n, i, suma;
    printf("Wprowadz rozmiar tabeli: \n");
    scanf("%d", &n);
    int tablica[n];
    for (i=0; i<n; i++)
    {
        printf("Wprowadz %d liczbe: \n", i+1);
        scanf("%d", &tablica[i]);
    }
    suma=sumuj(tablica, n);
    printf("Suma= %d", suma);
    return 0;
}

int sumuj(int tablica[],int n)
{
    int suma, j;
    suma=0;
      for (j=0; j<n; j++)
    {
        suma=suma+tablica[j];
    }
    return suma;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1