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

Jak poprawnie uzyc funkcji do liczb pierwszych i wpisac te liczby do pliku?

0 głosów
341 wizyt
pytanie zadane 3 września 2018 w C i C++ przez KaRoLiNakk Nowicjusz (160 p.)
#include <stdio.h>
#include <stdlib.h>
#define SIZE 6

//wczytuje z pliku liczby i wybiera te pierwsze i wpisuje do deugiego pliku.

void Drukuj(int Tab[], int num){
    int i;
     for(i=0;i<num;i++)
        printf("%d\n",Tab[i]);

}

int LiczbyPierwsze(int Tab[],int num){
    int i,x;
    x=Tab[i];
    if(x<2)
        return 0;
    for(i=2;i<num;i++){
        if(x%i==0)
        return 0;
    else return x;
    }
}
int main()
{
        int i,x,n;
        FILE *DaneWej;
        FILE *DaneWyj;
        FILE *LiczbyDwa;
        int Tab[SIZE];
        int Tab2[SIZE];

        DaneWej=fopen("Liczby.txt","r");
        if(DaneWej==NULL){
            printf("Nie mozna odtworzyc piku.\n");
            return 1;
        }
            for(i=0;i<SIZE;i++){
            fscanf(DaneWej,"%d",&x);
            Tab[i]=x;
        }
        DaneWyj=fopen("Liczby pierwsze.txt","w");
         for(n=0;n<SIZE;n++){
        fprintf(DaneWyj,"%d \n", LiczbyPierwsze(Tab,SIZE));
         }
       LiczbyDwa=fopen("LiczbyPodziDwa.txt","w");
        for(n=0;n<SIZE;n++){
            fprintf(LiczbyDwa,"%d \n",x);
        }
        Drukuj(Tab,SIZE);
        fclose(DaneWej);
        fclose(DaneWyj);
    return 0;
}

 

1
komentarz 3 września 2018 przez criss Mędrzec (172,570 p.)

    int i,x;
    x=Tab[i];

jaką wartość ma wg ciebie `i` w tym miejscu? Co ta funkcja LiczbyPierwsze w ogole wg ciebie robi?

komentarz 3 września 2018 przez KaRoLiNakk Nowicjusz (160 p.)
Czyli trzeba ustawić x na pierwszy element tablicy? Wlasnie duży problem leży w napisaniu tej funkcji, żeby wybierala z tablicy tylko liczby pierwsze
komentarz 3 września 2018 przez criss Mędrzec (172,570 p.)
Co to znaczy "wybierała"? Nie masz żadnego mechanizmu oznaczania takich liczb, a sama funkcja, o ile domyślam się co miała robić, to jej kod jest kompletnie pozbawiony sensu niestety.
komentarz 5 września 2018 przez KaRoLiNakk Nowicjusz (160 p.)
#include <stdio.h>
#include <stdlib.h>
#define SIZE 6
//wczytuje z pliku liczby i wybiera te pierwsze i wpisuje do deugiego pliku.

void Drukuj(int Tab[], int num){
    int i;
     for(i=0;i<num;i++)
        printf("%d\n",Tab[i]);

}
int LiczbaPierwsza(int x){
    int i;
    int ile = 0;
    for (i = 1; i <= x; ++i) {
        if ((x % i) == 0)
            ile++;
    }
    return ile == 2 ? x : 0;
}


int main()
{
      int i,x,n;
        FILE *DaneWej;
        FILE *DaneWyj;
        int Tab[SIZE];
        
        DaneWej=fopen("Liczby.txt","r");
        if(DaneWej==NULL){
            printf("Nie mozna odtworzyc piku.\n");
            return 1;
            }
            for(i=0;i<SIZE;i++){
            fscanf(DaneWej,"%d",&x);
            Tab[i]=x;
        }



        DaneWyj=fopen("Liczby pierwsze.txt","w");
         for(n=0;n<SIZE;n++){
        fprintf(DaneWyj,"%d \n",LiczbaPierwsza(x));

         }

        Drukuj(Tab,SIZE);
        fclose(DaneWej);
        fclose(DaneWyj);

    return 0;
}

poprawione. ale nadal mam problem zeby do drugiego pliku wpisywac tylko liczby pierwsze.

komentarz 6 września 2018 przez criss Mędrzec (172,570 p.)

Zamiast

         for(n=0;n<SIZE;n++){
        fprintf(DaneWyj,"%d \n",LiczbaPierwsza(x));
 
         }

 

    for(n=0;n<SIZE;n++){
        if (LiczbaPierwsza(Tab[n]) != 0)
            fprintf(DaneWyj,"%d \n",Tab[n]);
         }

A sama funkcja LiczbaPierwsza powinna wygladac tak:

int LiczbaPierwsza(int x){
    int i;
    for (i = 2; i <= x/2; ++i) {
        if ((x % i) == 0)
            return 0;
    }
    return 1;
}

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 313 wizyt
pytanie zadane 14 grudnia 2015 w PHP przez kaminiak23 Użytkownik (640 p.)
+1 głos
0 odpowiedzi 192 wizyt
pytanie zadane 30 czerwca 2022 w JavaScript przez Renzov Obywatel (1,220 p.)
0 głosów
3 odpowiedzi 1,052 wizyt

93,633 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,141 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...