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.
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.
#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 :)
kierko13 napisał(a):
stworze tablice i wczytam do niej w petli kwadraty liczb z pierwszej tablicy.
No i gdzie masz tę pętlę?
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
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.
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? :)
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]);
}
Ok,dziękuję bardzo. Nawet nie wiesz jak mi pomogłeś ! :)
Pomyłka (poprawiona), w printf wypisujemy floaty (%f
), a nie inty (%d
).