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

Funkcje w C,,,

VPS Starter Arubacloud
0 głosów
86 wizyt
pytanie zadane 5 listopada 2020 w C i C++ przez arccx Nowicjusz (210 p.)

Cześć, za zadanie mam napisać program, który sprawdza czy podana przez usera liczba jest pierwsza czy złożona. Doszedłem do czegoś takiego: 

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

void funkcja(int x){
    for (int a=2; a>sqrt(x); ++a){
        if (x%a==0 && a!=x && a!=1){
            printf("Liczba jest złożona");
        } else {}
    }
}

int main()
{
    int x;
    printf("Podaj liczbe\n");
    scanf("%d", &x);
    if (x>=0){
        if(x==1 || x==0){
            printf("Liczba nie jest ani pierwsza ani zlozona");
        } else{
            funkcja(x);
            }
    } else {
        printf("Liczba nie jest naturalna");
        }
}

i nie jestem pewny co jest źle... 

2 odpowiedzi

+1 głos
odpowiedź 5 listopada 2020 przez tangarr Mędrzec (154,780 p.)
wybrane 5 listopada 2020 przez arccx
 
Najlepsza

Wykonanie funkcji możesz w dowolnym momencie przerwać używając słowa kluczowego return.
Przykład:

void znajdz_liczbe_w_tablicy(int *tablica, int dlugosc_tablicy, int szukana_liczba) {
    int i;
    for (i=0; i<dlugosc_tablicy; i++) {
        if (tablica[i] == szukana_liczba) {
            printf("Liczba %d znajduje się w tablicy na pozycji %d\n", szukana_liczba, i);
            return; // przerywamy funkcję
        }
    }
    // jeżeli nie znaleziono liczby to funkcja wykona ten kod
    printf("Nie znaleziono liczby %d w tablicy\n", szukana_liczba);
}

 

0 głosów
odpowiedź 5 listopada 2020 przez arccx Nowicjusz (210 p.)
Problem jest bardziej tej natury, że po wpisaniu przykładowo 23 program konczy dzialanie, nie wypisując czy ta liczba jest pierwsza czy zlozona
komentarz 5 listopada 2020 przez tangarr Mędrzec (154,780 p.)
Spójrz na moją funkcję.
Potem spójrz na swoją funkcję.
Wyszukaj podobieństw. Zastanów się kiedy w jakich sytuacjach powinieneś kończyć działanie funkcji. Zastanów się, kiedy przekazana liczba jest funkcją pierwszą.
komentarz 5 listopada 2020 przez arccx Nowicjusz (210 p.)
Szczerze mówiać, staram się doszukać różnic, i ślęczę nad tym samym kodem drugą godzinę nie widząc, co tutaj mogłoby działać niepoprawnie :/
komentarz 5 listopada 2020 przez tangarr Mędrzec (154,780 p.)

W tej sytuacji zostaw ten problem bo już jesteś tak przemęczony, że w życiu nie wymyślisz rozwiązania tego problemu.

Wróć do tego jutro z chłodną głową.

Zacznij od przetestowania takiej funkcji:

void funkcja(int x){
    for (int a=2; a>sqrt(x); ++a){
        if (x%a==0) {
            printf("Liczba jest podzielna przez %d\n", a);
        }
        else {
            printf("Liczba NIE JEST podzielna przez %d\n", a);
        }
    }
    printf("test\n");
}

najlepiej dla liczb 120 i 127

komentarz 5 listopada 2020 przez arccx Nowicjusz (210 p.)
Dobra już ogarnąłem o co chodzi... Dzięki

Podobne pytania

0 głosów
2 odpowiedzi 253 wizyt
pytanie zadane 23 października 2023 w C i C++ przez maxkolanko1998 Gaduła (3,210 p.)
0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 5 lutego 2023 w C i C++ przez Martita Bywalec (2,470 p.)
+1 głos
1 odpowiedź 150 wizyt
pytanie zadane 12 grudnia 2021 w C i C++ przez Wiktor51207 Początkujący (380 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...