Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
Na, közben rohangásztam, meg kajáltam, de végül sikerült megírni, jól telepakoltam neked kommentekkel, hogy értsd, mit miért csináltam.

#include <stdio.h>
#include <math.h> /* gyökvonás miatt */
#include <ctype.h> /* isdigit() miatt */
#include <stdlib.h> /* atoi miatt */
int prime_or_not(int number); /* deklaráljuk, hogy van ilyen fv.-ünk. Most nem a feladatban meghatározott legrosszabb algoritmust fogom használni. */
int main(int argc, char *argv[])
{
int min, max, temp;
if(argc<3){
/* hibaüzenetek, kilépés hibával */
fputs("Tul keves a parameter!\n", stderr);
return -1;
}
if( isdigit(*argv[1]) )
min = atoi(argv[1]);
else{
fputs("Az elso parameter nem szam!\n", stderr);
return -1;
}
if( isdigit(*argv[2]) )
max = atoi(argv[2]);
else{
fputs("A masodik parameter nem szam!\n", stderr);
return -1;
}
if(min>max){ /* ezt egy fv.-be is lehetne írni [swap(min,max);], most nem tököltem vele */
temp=min; /* átmenetileg eltároljuk min értékét, aztán átadjuk max-nak */
min=max;
max=temp;
}
printf("A %d es %d kozotti primszamok:\n",min,max);
/* jöhet a prímtesztelés, prímek kiírása */
for(;min<=max;++min)
if(prime_or_not(min))
printf("%d\n",min);
return 0; /* VÉGE */
}
/***** Prímtesztelő függvény *****/
int prime_or_not(int number){
int i, divider, max;
if(number==0 || number==1) return 0; /* ezek nem prímek! */
max=(int)(sqrt(number)+1); /* "Csak a p≤(négyzetgyök n) -ig szükséges próbálkozni." lásd pl. Wikipédia. Itt: cast-olás. */
for(divider=1,i=2;(i<max && divider<2);++i)
/* divider<2-nek az az oka, hogy meghatároztuk a max-ot, és az semmiképp nem érheti el magát a számot, így jelen esetben önmaga nem lesz osztója (mint a szabály szerint), így a divider 2-re se mehet fel a prímeknél sem */
{
if(number%i==0) /* ha maradék nélkül megvan a számban az i aktuális értéke */
divider=i;
}
if(divider>1) return 0; /* nem prím */
return 1; /*egyébként prím */
} -
Sk8erPeter
nagyúr
Láttad a korábbi hsz.-emet?
Mert amit ide leírtál, az alapján tényleg nem vágod, mire való az argc, argv, pedig azt hittem, egyértelműen leírtam (leírtuk).
De nem is látom az eredeti feladatspecifikációdban, hogy egyáltalán szükség lenne file-kezelésre, file-ba írásra.
Na, de most gyakorlásképp mindjárt megcsinálom neked kompletten a feladatot.
-
Gyuri16
senior tag
egyaltalan nem ertem mit csinaltal. az eleje (majdnem) jo, igy kellene kineznie:
if (argc < 3) {
/* keves parametert adtal meg, irass ki valami hibauzenetet,
es hogy hogyan kell hasznalni a programodat,
aztan lepj ki hibakoddal */
}
min = atoi(argv[1]);
max = atoi(argv[2]);
ekkor a ket parameter amit a programod utan irtal futtataskor a min es max valtozokban lesz. tovabb nincs miert foglalkoznod az argv-vel. a feladatod szerint igy kellene folytatni:
if (min>max) {
/* csere: min <--> max */
}
int i;
for (i=min; i<=max; i++) {
// vegignezzuk az osszes szamot min es max kozott
/* ha i primszam akkor kiirod ahova kell */
}ott ahol /* kommentar */ van, kell irni meg par sornyi kodot
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Éjszakai műszak
- S.T.A.L.K.E.R.: Call of Pripyat
- A fociról könnyedén, egy baráti társaságban
- Apple MacBook
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Apple iPhone 17 Pro Max – fennsík
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Windows 11: miért nem vált mindenki?
- További aktív témák...
- Ruckus ZoneFlex 7363 - Access point - hozzáférési pont - Több db
- 2TB - 2,5" SAS - HDD - HP MM2000JEFRC 2Tb HDD - új dobozos
- HP UPS R5500 XR intl (326528-002) - Szünetmentes tápegység
- Kingston FURY Beast 32GB (2x16GB) DDR4 3200MHz (Beszámítás)
- ÚJ HP All in One 24-cr1234na PC - 24"FHD IPS - Ultra 5 125U - 16GB - 512GB SSD - Win11 - Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

