- Vezetékes FEJhallgatók
- Milyen egeret válasszak?
- Hivatalosan is elkészült az NVIDIA App
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Házimozi belépő szinten
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Hogy is néznek ki a gépeink?
- Vezetékes FÜLhallgatók
- Milyen TV-t vegyek?
Új hozzászólás Aktív témák
-
sorath
csendes tag
vagy lenne még 1 feladat amit félig megtudtam csinálni ezzel csak annyi a baj hogy lekellene korlátozni hogy csak betüket fogadjon el lényege h kisbetüt nagybetüvé konvertáljak
valaki ki tudná úgy egészíteni h csak a betüket fogadja el?
#include <stdio.h>
#include <string.h>
#include <ctype.h>int main() {
int meret=5;
int i;
int beolvas=0;
char akt;printf("Hany karaktert konvertaljunk at?");
scanf("%d", &meret);char eredet[meret];
printf("Kerem a betuket!");
for (i=0;i<meret;i++)
{
scanf("%s", &eredet);
}for (i=0;i<meret;i++)
{
eredet(i)=toupper(eredet(i));
}
/* vagy a toupper nelkulfor (i=0;i<meret;i++)
{
char atmenet = eredet(i)-32;
eredet(i)=atmenet;
}
for (i=0;i<meret;i++)
{
printf("%c", eredet(i));
}getchar();
return 0;}
-
Gyuri16
senior tag
ez a progam igy nem korrekt. egyreszt szintaktikailag se jo (eredet(i) helyett eredet[i]). masreszt a beolvasasod se jo, mivel a valtozodat mindig felulirod, igy csak az utolso betut jegyzed meg
hogy az eredeti kerdesre valaszoljak: isalpha() fuggveny segithet, ez megnezi, hogy a char amit adsz neki betu e, ha csak kisbetuk erdekelnek akkor islower()
#1650:
Sk8erPeter szepen osszefoglalta pedig. probald meg a programot a hsz-e vegerol lemasolni. irj hozza annyit, hogy kiirasd a ket valtozot. ezutan forditsd le, es futtasd a ket parameterrel[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
Sk8erPeter
nagyúr
Szerintem eleve félreérted az argc, argv szerepét: itt nem kell scanf, mivel a program neve mögött szereplő paraméterekre vagy kíváncsi, abból tudod meg azt, amit Te a scanf-fel akarnál megtudni.
Ha Windows-t használsz, akkor nyiss egy Start- Futtatás- cmd -t, navigálj el arra a könyvtárra, ahol a lefordított programod van az exe-fájllal. Ha a korábban említett "akarmi.exe" a programod neve, akkor írd be ezt a cmd-nél parancsnak:
akarmi.exe 10 50
Aztán Enter, és a programodnak mennie kell a megadott paraméterekkel.
De ezt már írtam korábban is. Ekkor a 10 lesz a min, 50 a max, ha jól csináltad.Sk8erPeter
-
sorath
csendes tag
ezt hoztam össze de nem megy vmi megoldás?
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{
int min, a, max;
FILE* pFile;
if(argc<3)
min = atoi(argv[1]);
max = atoi(argv[2]);
for(min=0;min<=max;min++)
argv[min]=2*min+3;a=-1;
pFile=fopen("prim.txt","w");while(a<max){
while(!argv[++a]);
min=a;
while((min+=argv[a])<max)argv[min]=0;
fprintf(pFile,"%d\n",argv[a]);
}fclose(pFile);
free(argv);
system("PAUSE");
return 0;}
-
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
[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
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.
Sk8erPeter
-
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
-
Gyuri16
senior tag
válasz Sk8erPeter #1658 üzenetére
szerintem a prime_or_not nagyon szerencsetlen fuggvenynev, hiszen a "prim vagy nem" mindig igaz, nem egyertelmu mit csinal a fuggveny. inkabb is_prime vagy hasonlo javasolt.
igen, szeretem mas kodjat kritizalnite mar a jobb verziot csinaltad, ami csak a gyokeig keresi az osztokat. viszont foloslegesen mesz vegig az osszes oszton, ha mar megtalaltad, hogy valami osztja (divider valtozod), ott mar ki tudod jelenteni, hogy nem prim
itt az en verziom (tiedet felhasznalva), ami jobban koveti az eredeti kiirast (ezert aztan butabb is, viszont lehet kicsit egyszerubb):
#include <stdio.h>
#include <ctype.h> /* isdigit() miatt */
#include <stdlib.h> /* atoi miatt */
int prim(int i);
int main(int argc, char *argv[]) {
/* beolvasas, ugyanaz.. */
int i;
for (i=min; i<=max; i++) {
if (prim(i))
printf("%d\n",i);
}
}
int prim (int i) {
if (i<2)
return 0;
int j;
for (j=2; j<i; j++) // itt eleg lenne sqrt(i)-ig
if (i%j==0)
return 0;
return 1;
}[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
Bero
aktív tag
Üdvözletem!
Segítséget szeretnék kérni, hogy miért nem működik ez ebben a formában:#include <stdio.h>
#include <conio.h>
#define MAX 100
int getline(char s[],int lim)
{
int i;
char c;
for(i=0;i<lim && (c=getchar())!=EOF && c!='\n';i++)
{ s[i]=c; }
s[i]='\0';
while(c!=EOF && c!='\n')
c=getchar();
return i;
}
void main(void)
{
char str[MAX];
int i;
int egyeb=0, egy=0, ket=0, ha=0, negy=0, ot=0, hat=0;
clrscr();
printf("K‚rek egy sort:");
getline(str,MAX);
for(i=0; i<MAX; i++)
{
if (str[i] == '1')egy++;
else if(str[i] == '2')ket++;
else if(str[i] == '3')ha++;
else if(str[i] == '4')negy++;
else if(str[i] == '5')ot++;
else if(str[i] == '6')hat++;
else egyeb++;
}
printf("%s", str);
printf("\n1 = %d", egy);
printf("\n2 = %d", ket);
printf("\n3 = %d", ha);
printf("\n4 = %d", negy);
printf("\n5 = %d", ot);
printf("\n6 = %d", hat);
getch();
}kockadobásokat kér be, max 100-at, és utána egyszerűen megszámolja.
Előre is köszönöm! -
Karma
félisten
Egyszerű: nem törődsz a beolvasott szöveg hosszával, mindig 100 elemig fut a ciklusod. Feltéve, hogy a getline függvény jól működik (elég sok helyen írták ugyanezt a topikban, gondolom valami órai sablon), akkor a visszatérési értéke a beolvasott karakterek száma, használd ezt a ciklus végértékének.
“All nothings are not equal.”
-
shev7
veterán
egyreszt ez nem ertem miert kell:
while(c!=EOF && c!='\n')
c=getchar();Masreszt hiaba csa 10-et olvasol be ha a vizsgalat a main-ben 100-ig megy. Ott mar nem vizsgalod, hogy eljutottal-e a \0-ig
Masreszt ez talan problemat fog okozni, ha i erteke 100
s[i]='\0';
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Sk8erPeter
nagyúr
válasz Gyuri16 #1659 üzenetére
A névvel kapcsolatban igazad van, dehát a feladat megvalósítása szempontjából kb. az volt az, amit a legjobban lesz@rtam. Amúgy sem gondolkodtam olyan túl sokat a feladat megoldásán, nem épp ezen kell leakadni.
"viszont foloslegesen mesz vegig az osszes oszton"
Már miért mennék végig az összes osztón?
A for ciklusból szerintem nem vettél észre egy részletet:
(i<max && divider<2)
(A zárójelezés szándékos, bár nem lenne kötelező, hogy jobban látható legyen, hogy összetartozik.)
Tehát eleve ha már divider mondjuk elérte a 2-t, akkor nem is fut tovább a ciklus.
Azért nem tértem vissza egyből már a for ciklusból, mert utána lehet, hogy akar további műveleteket végezni, vagy mittudomén, kiírni valami üzenetet, akkor legyen szabadon bővíthető, könnyebben átalakítható. Legfeljebb abban az esetben csak kiírja, hogy prím vagy sem, aztán végzi tovább a dolgát, ahogy akarja.
Ezek fényében nem nagyon értem a kritikát.Sk8erPeter
-
shev7
veterán
válasz Sk8erPeter #1663 üzenetére
teny, hogy feleslegesen nem fut a ciklusod de a divider valtozo behozasa a kepbe csak feleslegesen bonyolitja az algoritmust, es rontja az olvashatosagot, (nekem legalabbis beletelt par percbe mig felfogtam, hogy mi van, es miert is mukodik jol) Ha valami uzenetet akar kiirni, ahhoz nem kell ez a varazslas, megy az a return elott is.
[ Szerkesztve ]
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
sorath
csendes tag
válasz Sk8erPeter #1658 üzenetére
annyi kérdésem lenne hogy ugye a min és max értékét úgy adom meg
hogy pl: akarmi.exe 10 50 de így indítom lefut de semmi más nem történik -
Sk8erPeter
nagyúr
Pedig direkt sokat kommenteztem, azt hittem, attól lesz egyértelmű. De akkor nem. De mondjuk nem tudom, minek mentegetőzzek, mondtam, hogy nem a legtökéletesebb program, de elég gyorsan írtam, így nem foglalkoztam olyanokkal, mint a "függvény neve", "van-e felesleges változó, és ki lehet-e váltani valamivel, minimalizálni a kódot"... Már kezdem bánni, hogy megcsináltam a programot a srác helyett...
Sk8erPeter
-
Bero
aktív tag
Köszönöm, így már működik.
Még egy kérdés, hogy tudom elintézni azt, hogy az elején a program rákérdezzen hány dobást fogunk végezni, és addig kérje be?
Ha egy int-be scanf-el bekérek egy számot, akkor a getline nem is fut le.Nagyon szégyelem magam, túlságosan is kezdő vagyok hozzá, de remélem azért érthetően fogalmaztam a kérdést.
Iskolai sablon a getline, tanárok szerint minden programhoz használnunk kell, de az igazság az hogy jobbat én nem is tudok varázsolni.
-
shev7
veterán
válasz Sk8erPeter #1666 üzenetére
"Már kezdem bánni, hogy megcsináltam a programot a srác helyett... "
azt sose band. Es a kritikat se vedd szemelyes sertesnek. A cel nem az, hogy megmutassuk rossz amit irtal, egyaltalan nem. A cel az, hogy mas is tanuljon belole.
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Gyuri16
senior tag
válasz Sk8erPeter #1663 üzenetére
igazad van, megzavartak a kommentek
Azért nem tértem vissza egyből már a for ciklusból, mert utána lehet, hogy akar további műveleteket végezni, vagy mittudomén, kiírni valami üzenetet, akkor legyen szabadon bővíthető, könnyebben átalakítható.
egy szo: KISS annak a fuggvenynek az a dolga hogy megmondja prim-e vagy nem. lehet nekem mas a velemenyem a fuggvenyek tervezeserol (es nem feltetlenul jo), ezert irtam csakMár kezdem bánni, hogy megcsináltam a programot a srác helyett.
sorry, nem ezt akartam elerni.
szerintem egy ilyen forumon van helye errol beszelni, hiszen van itt jopar szakember, akiknek a velemenyere adokNem vagyok egoista, csak uborkagyalu!
-
Sk8erPeter
nagyúr
Honnan indítod el így? Ha mondjuk Total Commanderben adod be neki így a két paramétert, akkor gyorsan lefut, aztán kilép a fenébe. Az MS-DOS parancssorról kell beadni neki. Vagy akkor tegyél a return elé egy várakoztatást, mondjuk Windows alatt beteheted akár a system("PAUSE"); sort is, de ez alapból kerülendő: Things to Avoid in C/C++ -- system("pause"), de egy ilyen full egyszerű programnál nem lesz bajod belőle.
Kipróbáltam a programot, mielőtt bemásoltam volna, működik, "a hiba az Ön gépében van". Amúgy szívesen...Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Gyuri16 #1669 üzenetére
Ebben teljesen igazad van, függvénynek nem I/O művelet a dolga, csakis annak elvégzése, amiért meghívták. A főprogram írogasson ki. Tehát ilyen egyetértek veled, de ha kicsit több energiát fektettem volna a dologba, akkor biztos feltűnt volna.
(#1668) shev7: OK, igaz, végül is nekem is jó, ha szóltok, hogy valahol lehetett volna jobban. Csak azt hittem, most jön a saváradat, ami miatt aztán szégyellhetem a pofám, hogy hogy írhattam ilyen sz@rt. Amúgy igazatok van abban, amiket írtatok.
Mondjuk azt bírom, hogy a srác, aki annyit kérdezősködött, és akinek megírtam, még csak annyit se mondott, hogy "kösz vaze"... Így próbáljon segíteni az ember másnak. Vagy csak én vagyok a maradi, hogy meg szoktam köszönni, ha segítenek nekem?[ Szerkesztve ]
Sk8erPeter
-
shev7
veterán
válasz Sk8erPeter #1671 üzenetére
"Vagy csak én vagyok a maradi, hogy meg szoktam köszönni, ha segítenek nekem?"
Mit koszonjon meg? Nem latod, hogy nem mukodik neki
lepj tul ezen te vagy azon keves lelkesek egyike akik jofejsegbol ingyen megcsinaljak mas hazijat. Majd megunod, en is meguntam. De addig meg ne hagyd hogy ilyenek eltantoritsanak, ha jol tudom te is meg csak tanulod a dolgokat, jo gyakorlas ez. Mi meg majd szetszedjuk, es abbol is tanul mindenki aki a topicot latogatja. Savazas nem lesz, abban biztos lehetsz!
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
sorath
csendes tag
válasz Sk8erPeter #1670 üzenetére
Meg köszöntem volna am nagyon rendes volt és tényleg nagyon sokat segített!!
Köszönöm! -
sorath
csendes tag
válasz Sk8erPeter #1674 üzenetére
beírtam neki a pauset most nem fut le egyből viszont totalból indítottam még és elfogadja h akarmi.exe 10 50 mondjuk de kiírásnál a számokat nem adja ki csak végig léptet annyiszor amennyi prim szam van megnézem dos alatt mit csin most
-
sorath
csendes tag
régen c++ ban sokat programoztam igaz ijen alap szinten aztán most ojan fura c ben h ijen fügvénymegadások villamosmérnöknek tanulok és ijent kérnek főleg h magas feszen mert vannak akik kisfeszen vannak azoknak ok nekik kell plc ket meg mikro procikat stb stb na mind1 még 1 szer kösz szépen
-
Gyuri16
senior tag
egy kis program forraskodjat neztem, ennel megakadtam:
n = snprintf(buffer, sizeof(buffer),"...",... );
/*
* We write it with the final '\0' and then truncate it.
* This way, even if somebody were to read it concurrently,
* the data should always be valid as a string.
*/
write(fd, buffer, n+1);
ftruncate(fd, n);mit akar jelenteni ez a komment? es miert is jo ez igy?
Nem vagyok egoista, csak uborkagyalu!
-
Jester01
veterán
válasz Gyuri16 #1677 üzenetére
Valószínűleg ez fájl felülírás, tehát már lehet valami ott. Ha feltételezzük, hogy az olvasás a fájl végéig megy, akkor 0 byte hatására még ha van is utána szemét az C stringként már nem fog látszani.
Pl. ha a fájlban most az van, hogy "makvirag" és azzal akarod felülírni, hogy "rozsa" akkor a 0 byte nélkül az lenne ott átmenetileg, hogy "rozsarag". Ha egy másik program épp ilyenkor olvasná ki akkor hibás adatot kapna. Ha viszont a lezáró nulla byte is bekerül, akkor azt fogja kapni, hogy "rozsa<0>ag". De mivel a C logika szerint a string csak a 0 byteig tart, ezért ez a helyes "rozsa" értékkel egyenértékű. Ezután persze az ftruncate le fogja vágni a fölösleges byteokat, szóval csak egy nagyon rövid ideig fordulhat elő.
Jester
-
Gyuri16
senior tag
válasz Jester01 #1678 üzenetére
koszonom, igy mar ertheto.
kozben tovabb olvasva talaltam meg egy erdekeset:
program elejen van egy ilyen:
signal(SIGCHLD, SIG_IGN);
(ha jol tudom ez a default beallitas..)aztan kesobb ez:
int pid = fork();
if (!pid) {
/* ... */
exit(1);
}
/*
* Yeah, we set CSIGCHLD to SIG_IGN, so this should
* never even succeed reliably anyway, but at least
* we'll wait for the child to exit, and not have
* potentially lots of children outstanding.
*/
if (pid > 0) {
int status;
waitpid(pid, &status, 0);
}itt ismet a kommentar amit nem ertek.
azt tudom, hogy ha fork()-kal egy uj processzt letrehozunk, akkor az addig el (zombikent) amig a szulo (vagy ha mar az nincs akkor az init) meg nem hivja a wait()-et. ez itt megtortenik, nem ertem mi a gond a szerzo szerintmod: miert lettem en is OFF? en nem akartam
[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
Jester01
veterán
válasz Gyuri16 #1680 üzenetére
man waitpid
POSIX.1-2001 specifies that if the disposition of SIGCHLD is set to SIG_IGN or the SA_NOCLDWAIT flag is set for
SIGCHLD (see sigaction(2)), then children that terminate do not become zombies and a call to wait() or waitpid() will
block until all children have terminated, and then fail with errno set to ECHILD. (The original POSIX standard left
the behavior of setting SIGCHLD to SIG_IGN unspecified. Note that even though the default disposition of SIGCHLD is
"ignore", explicitly setting the disposition to SIG_IGN results in different treatment of zombie process children.)Tehát a 2001-es POSIX szabvány szerint a signal miatt nem lesznek zombik, a waitpid pedig az összes gyereket bevárja és aztán hibát dob (vagyis nem adja vissza a status-t). Más szabványú implementáció esetén még a signal ellenére is szükséges lehet a waitpid a zombik elkerülésére.
Jester
-
Gyuri16
senior tag
válasz Jester01 #1681 üzenetére
koszonom, ertem.
igy viszont nem igazan vilagos mire is volt jo az, hogy beallitotta SIG_IGN-ra az elejen, hiszen ez a default ertek, es ha jol ertem akkor ezzel csak azt erte el, hogy a waitpid() az osszes gyerekre var (viszont itt mindig csak egy lesz egyszerre). tehat ha az elejen nem teszi oda a SIG_IGN-t, es a fork() utan tesz egy wait()-et, akkor nem ugyanez az eredmeny?
a program ezen kivul nem hoz letre processzeket (kiveve, hogy a foprogram demonkent fut)mindenesetre majd holnap kiprobalom, hogy is mukodik ez
Nem vagyok egoista, csak uborkagyalu!
-
Bero
aktív tag
No megírtam így, eredetileg is így kérték, egy kérdésem van még
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
void main(){
char str[100];
int dobas;
int i;
int egy=0, ket=0, ha=0, negy=0, ot=0, hat=0;
clrscr();
printf("\nHany kocadobast vegez? ");
scanf("%d", &dobas);
printf("Irja be a kockadobasok eredmenyeit! ");
scanf("%s", str);
for(i=0;i<dobas;i++)
{
if (str[i] =='1')egy++;
else if (str[i] == '2')ket++;
else if (str[i] == '3')ha++;
else if (str[i] == '4')negy++;
else if (str[i] == '5')ot++;
else if (str[i] == '6')hat++;
}
printf("1: %d db\n", egy);
printf("2: %d db\n", ket);
printf("3: %d db\n", ha);
printf("4: %d db\n", negy);
printf("5: %d db\n", ot);
printf("6: %d db\n", hat);
getch();
}Hogy tudom a bekért számsor formai helyességét ellenőrizni egyszerűen? Ebben az esetben azt hogy szám-e, illetve hogy 1 és 6 között van.
Előre is nagyon köszönöm a segítséget![ Szerkesztve ]
-
shev7
veterán
mivel egyszerre kered be az osszes kockadobas eredmenyet, igy az ujra bekeres azt jelenti, hogy az egesz sorozatot ujra be kell kerned. Ha mar bekeresnel is ellenorizni akarsz, akkor celszeru karakterenkent beolvasni, es csak az adott karaktert kerni ujra
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
nepszter1
addikt
Üdv , egy könnyű kérdésel fordulok hozzátok hogyan islehetne megirni azt hogy 2-vel és 3mal is osztható legyen ? köszönöm
-
Karma
félisten
válasz nepszter1 #1686 üzenetére
Ha egy A szám osztható egy B számmal, akkor a A-t osztva B-vel a maradék 0.
A C nyelvben a modulus művelet (A % B) adja meg az osztás maradékát.Ha az a kérdés, hogy 2-vel is és 3-mal is, akkor egy modulus elég
shev7 meg lelőtte[ Szerkesztve ]
“All nothings are not equal.”
-
shev7
veterán
válasz nepszter1 #1686 üzenetére
oszthato 6-tal? vagy en nem ertem mit szeretnel tudni...
MOD: Karma: bocsi... azt hittem hogy akik C-ben programoznak, vagy akarmiben is programoznak, azoknak a matekhoz legalabb valami kozuk van... anelkul...
[ Szerkesztve ]
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Gyuri16
senior tag
miutan beolvastad az adatokat vegzel egy ellenorzest.
egy for ciklussal vegigmesz a string elemein, mindegyiken megnezed, hogy 1 es 6 kozott van-e.
ezt legegyszerubben ugy, hogy a betu '1' es '6' kozott van-e (siman osszehasonlitassal), igy:char k;
/* k-t beolvasod stb.. */
if (k>='1' && k<='6') {
/* a szam 1 es 6 kozott van */
}ez a megoldas nem a legszebb, mivel bizik abban, hogy a kodolasban a szamok novekvo sorrendben vannak egymas utan (altalaban ez igy van). ha ez nem tetszik, akkor az isdigit() fv segithet.
(bar megjegyzem en inkabb eleve szamokkent kezelnem ezeket az adatokat, es ugy is olvasnam be oket)az egesz tesztelest es beolvasast pedig egy ciklusba teszed, amit addig csinalsz, amig nem jo amit bead a felhasznalo
tovabba nem lenne rossz megnezni azt is, hogy a beolvasott dobas valtozod megegyezik-e a beolvasott dobasok szamaval
nepszter1: nem ertem mit kerdezel, olvasd el magad utan a hozzaszolasodat, es gondold ujra. ha egy szam osztoit akarod kiiratni, akkor vegigmesz egy ciklusban 2 tol a szamig, es a mar emlitett % operatorral megnezed osztja e.
[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
Gyuri16
senior tag
válasz nepszter1 #1693 üzenetére
te meg nem erted, hogy fogalmam sincs mit akarsz?
"...hogyan islehetne megirni azt hogy 2-vel és 3mal is osztható legyen "
ezt hogyan ertelmezzem?? ennyit irtal, probaltam ra valaszolni. abbol amit irtam ha legalabb kicsit is akarod meg tudod irni a programot
{itt egy osztonzo beszed lett volna, hogy nezz utana, tanuld meg. hiszen a vizsgan ugyis tudnod kell majd, de rajottem nem eri meg. ha ennyire nem erdekel a dolog ird le rendesen mit akarsz (hogyan van a beolvasas,...) es megirom}[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
nepszter1
addikt
válasz Gyuri16 #1694 üzenetére
Na szóval kezdjük ott gimibe járok szóval nem lesz semmilyen vizsga de nem akarok veszekedni . szóval valahogy úgy van hogy megkel adni egy számot pl.: 6 és utána ki adja azt hogy a szám osztható 2vel és 3mal is , és van ugye amikor nem osztható akkor irja hogy a szám nem osztható2vel és 3mal .
Remélem most érthető voltam , elnézést a kellemetlenségekért
#include <iostream>
eddig juttotam
[ Szerkesztve ]
-
shev7
veterán
válasz nepszter1 #1693 üzenetére
pedig hidd el, sokkal segitokeszebbek az emberek, ha nem azt kered, hogy hello ird meg az egeszet, hanem ha azt mondod, hogy idaig jutottam, ez hianyzik meg...
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
Gyuri16
senior tag
válasz nepszter1 #1695 üzenetére
#include <stdio.h>
int main() {
int x;
printf("Add meg a szamot!\n");
scanf("%d", &x);
if (x % 6 == 0)
printf("A szam oszthato kettovel es harommal is\n");
else if (x % 2 == 0)
printf("A szam kettovel oszthato, harommal nem\n");
else if (x % 3 == 0)
printf("A szam oszthato harommal, kettovel nem\n");
else
printf("A szam nem oszthato se kettovel se harommal\n");
return 0;
}meg mindig nem teljesen vilagosan irtad le, de gondolom valami ilyesmi kell. nezd meg, es probald meg megerteni mit csinal (direkt nem irtam legegyertelmubben), ne csak leadd a tanarnak
Nem vagyok egoista, csak uborkagyalu!
-
cellpeti
nagyúr
Sziasztok!
Tudnátok segíteni?Hogyan kell letárolni egy karaktersorozatot tömbbe?
Tigris, tigris, csóvafény...
-
shev7
veterán
válasz cellpeti #1698 üzenetére
karaktersorozatot ugy alapbol char* valtozoba olvasol be. Korabban volt egy hosszabb eszmefuttatas a topikban arrol hogy milyen korulmenyek kozott igaz az hogy pointer = tomb. De a lenyeg, ha letaroltad char*-ba akkor azzal dolgozhatsz ugy mint tombbel.
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest