• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wskaznik i tablice

0 głosów
598 wizyt
pytanie zadane 29 stycznia 2020 w C i C++ przez rysiek5555 Początkujący (300 p.)

Mam napisać funkcję: float suma(float*S, int N), która zwraca sumę dodatnich elementów tablicy S, podzielnych przez 11 oraz 7, a następnie program wywołujący te funkcje. N jest rozmiarem tablicy.

Napisałem tyle ale chyba coś jest nie tak mógłby ktoś pomoc poprawić to.

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

 float suma(float*S, int N)
 {
   {
     if(S[5] > 0, S[5] % 7==0 && S[5] % 11==0);
   }
  return 1;
 }

 int main (void)
 {

     float S[5];
     int N=5;
     float s;
     int i;
     for(i=0;i<N;i++)
     scanf("\n%d", &S[i]);
     printf("\nTablica\n");
     for(i=0;i<N;i++)
     printf("\n%f\n", S[i]);
     s+= S[1]+S[2]+S[3]+S[4]+S[5];
     printf("\nSuma elementow wynosi: %d", s );

   return 0;
 }

 

2 odpowiedzi

0 głosów
odpowiedź 29 stycznia 2020 przez SimiVoid Pasjonat (19,790 p.)
Jeżeli chcesz używać operatora modulo to musisz wiedzieć, że obydwie liczny muszą być typu int lub long long. Czyli nie możesz użyć typu float. Musisz użyć typu int, a zmienną s musisz zainicjować.
0 głosów
odpowiedź 29 stycznia 2020 przez rysiek5555 Początkujący (300 p.)

Zmieniłem trochę ten kod, ale funkcja musi jeszcze zwracać dodatnie elementy i podzielne przez 11 oraz 7. Ta zmienna *S gdzie mam wpisac.

 

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

float suma(float*S, int N)

{
      float suma=0;
      int i;
      for(int i=0;i<N;i++)
      {

        for(i=0;S[i];i++) suma += S[i];

      }
      return suma;
}

int main()
{

  printf("Suma wynosi: %d\n\n", suma);

return 0;
}

 

komentarz 29 stycznia 2020 przez tangarr Mędrzec (155,140 p.)
Dlaczego uparłeś się, że funkcja suma ma operować na liczbach zmiennoprzecinkowych float?
komentarz 29 stycznia 2020 przez rysiek5555 Początkujący (300 p.)
Z treści zadania to nie wynika? Nie uparłem się tylko takie zadanie dostałem do zrobienia.

Mam napisać funkcję: float suma(float*S, int N), która zwraca sumę dodatnich elementów tablicy S, podzielnych przez 11 oraz 7, a następnie program wywołujący te funkcje. N jest rozmiarem tablicy.

Najpierw mam napisać funkcję float suma(float*S, int N), a potem funkcje główną main. Chyba, że da się zrobić łatwiej zamiast float użyć int. Trzeba użyć tego wskaźnika *S tylko nie bardzo wiem gdzie.
komentarz 29 stycznia 2020 przez tangarr Mędrzec (155,140 p.)
Żeby sprawdzić czy liczba float jest podzielna przez N masz dwie możliwości:
- sprawdzasz czy po przecinku masz 0, konwertujesz na int i używasz operatora modulo
- dzielisz liczbę przez N i sprawdzasz, czy po przecinku masz 0

Żeby sprawdzić czy po przecinku masz 0 musisz od liczby zmiennoprzecinkowej odjąć tą samą liczbę przekonwertowaną na int. Jeżeli otrzymasz 0 to znaczy, że nie miałeś części dziesiętnej.

Podobne pytania

0 głosów
1 odpowiedź 353 wizyt
pytanie zadane 29 czerwca 2020 w C i C++ przez pozdro600 Początkujący (260 p.)
0 głosów
1 odpowiedź 191 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez pimpek Użytkownik (680 p.)
0 głosów
1 odpowiedź 323 wizyt
pytanie zadane 10 lutego 2016 w C i C++ przez Ziuziek Mądrala (5,140 p.)

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...