Tablice z użyciem typu float.

0

Witam. Jestem początkującym programistą. Zacząłem się uczyć języka C. Po kilku dobrze zrobionych zadaniach mam pewien problem.
Otóż nie mam pojęcia jak "przepisać " zmienione wartości z jednej tablicy do drugiej. Czy byłby ktoś chętny pomóc? Z góry dziękuję :).
Czy byłby ktoś w stanie napisać mi "na szybko" rozwiązanie tego zadania? Chciałbym zobaczyć gdzie popełniłem błąd :).
Tutaj treść zadania:
napisz program w ktorym ja w tablicy zaproponuje wartosci zmiennoprzecinkowe.
stworze tablice i wczytam do niej w petli kwadraty liczb z pierwszej tablicy.
sumuj wszystkie kwadraty liczb.
Sprawdz czy liczba ma jakies wartosci po przecinku.

1
kierko13 napisał(a):

Czy byłby ktoś w stanie napisać mi "na szybko" rozwiązanie tego zadania? Chciałbym zobaczyć gdzie popełniłem błąd :)

Akurat – nie masz nic i próbujesz wyłudzić gotowca, bo nie chce Ci się zrobić tego zadania. Taka prawda.

0
#include <stdio.h>

int main()
{
    float square(float score, float y){
        for (int i=0; i<4; i++){
        score = y * y;
        }
    return score;
    }
    
    float table[4] = {12.30, 11.20, 10.10, 13.40,};
    float table2[4];
    
        square(table2[4], table[4]);
    
}

Mam coś takiego :)

0
kierko13 napisał(a):

stworze tablice i wczytam do niej w petli kwadraty liczb z pierwszej tablicy.

No i gdzie masz tę pętlę?

0
float square(float score, float y){
        for (int i=0; i<4; i++){
        score = y * y;
        }
    return score;
    }

To jest funkcja z uzyciem petli,ale nie wiem jak wpisac do drugiej tabeli wyniki kwadratow tych liczb.
Teoretycznie kod dziala tylko nie wiem jak wpisac te dane do drugiej tabeli

0

Czemu zrobiłeś w main zagnieżdżoną funkcję?

Mniejsza o to...
Chcesz dla każdej liczby z table, zapisać jej kwadrat w table2.

for (int i=0; i < 4; i++) {
    table2[i] = table[i] * table[i];
}

Ale potrzebujesz też sumę kwadratów, więc:

float suma = 0.0f;
for (int i=0; i < 4; i++) {
    float kwadrat = table[i] * table[i];
    table2[i] = kwadrat;
    suma += kwadrat;
}

Poza tym tutaj piszesz literały typu double, a deklarujesz tablicę typu float:

float table[4] = {12.30, 11.20, 10.10, 13.40};

Żeby literały był typu float, to na końcu każdej liczby musi być literka f:

float table[4] = {12.30f, 11.20f, 10.10f, 13.40f};

Kompilator pewnie przyjmie i tak i tak, ale dla porządku lepiej pisać literał odpowiedniego typu...
W C# jak chcesz przypisać literał double do zmiennej typu float to jest błąd o ile dobrze pamiętam.

0

Ok, dziękuję bardzo ! :)
Jeszcze raz najmocniej przepraszam za kłopot,ale naprawdę zaczynam swoją historię z programowaniem i potrzebuje kogoś kto mi pomoże na początku.
Jak to mawiają początki zawsze bywają trudne ;).
Mam jeszcze jedno pytanie. Żeby wypisało mi w kompilatorze wyniki z tej drugiej tablicy mam po prostu wpisać return table2, tak? :)

0
kierko13 napisał(a):

Żeby wypisało mi w kompilatorze wyniki z tej drugiej tablicy mam po prostu wpisać return table2, tak? :)

Nie... nie w kompilatorze, tylko w konsoli. A żeby wypisać elementy table2, musisz w pętli wypisać każdy element tablicy.

for (int i=0; i < 4; i++) {
    printf("%f ", table2[i]);
}
0

Ok,dziękuję bardzo. Nawet nie wiesz jak mi pomogłeś ! :)

0

Pomyłka (poprawiona), w printf wypisujemy floaty (%f), a nie inty (%d).

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