• 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?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
218 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,590 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,590 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,590 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ź 197 wizyt
pytanie zadane 14 grudnia 2015 w PHP przez kaminiak23 Użytkownik (640 p.)
+1 głos
0 odpowiedzi 126 wizyt
pytanie zadane 30 czerwca 2022 w JavaScript przez Renzov Obywatel (1,220 p.)
0 głosów
3 odpowiedzi 741 wizyt

93,187 zapytań

142,201 odpowiedzi

322,012 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - Michal Drewniak
  6. 2006p. - rucin93
  7. 2005p. - Łukasz Siedlecki
  8. 1964p. - CC PL
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1586p. - Dawid128
  14. 1520p. - Marcin Putra
  15. 1480p. - ssynowiec
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...