- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- MasterDeeJay: Noname 1TB-os Sata SSD teszt. (Blue)
- Luck Dragon: Asszociációs játék. :)
- Gurulunk, WAZE?!
- sziku69: Fűzzük össze a szavakat :)
- bambano: Bambanő háza tája
- Négymagos Xeon(!) CPU LGA775-ös deszkában
- droidic: Így beszélhetsz élő emberrel EA supportban
- Parci: Milyen mosógépet vegyek?
Új hozzászólás Aktív témák
-
Ricqy
tag
Sziasztok!
Van valami mód egy int "hosszúságának" meghatározására?
Úgy értem:
1-> 1
123-> 3
12-> 2
Köszönöm! -
kingabo
őstag
Persze működne láncolt listával is, de 1millió elemnél elég durva overhead lenne az 500 000. elemet megtalálni, a felezgetésekhez. Másrészt a tömb elemei sorfolytonosan vannak a memóriában, ezekből egyszerre több is bekerül a proci cache-jébe, míg a lista elemei össze-vissza lehetnek a memóriában, sokkal többször kellhet a procinak a ramhoz fordulnia. Ekkora elemszámnál meg már elég rendesen érvényesül a sok kicsi sokra megy mondás...
-
-
Gyuri16
senior tag
tomb akarhogy is gyorsabb lesz, mar ha a beolvasasrol van szo. itt egy az egyben masolasrol beszelunk, ennel hogyan akarsz gyorsabban a memoriaba juttatni valamit? lancolt listanal sokszor kell memoriat foglalnod es erteket masolnod.
raadasul ha mar megvan a listad mit kezdesz vele? csak sorjaban tudod olvasni ami nagyon redukalja mit tudsz vele csinalni. a masik topicban irtam egy divide and conquer algoritmust, ilyesmit a listan nem tudsz megcsinalni.
ha annyira zavar, hogy kicsit tobb helyet foglaltal (ha mondjuk nem tudod elore mennyi adat lesz) azt utolag fel lehet szabaditani. ha ugyesen csinalod meg mindig kevesebb memoriad van feleslegesen mint lancolt listaval.
viszont tovabbra is nem ez a lenyegi kerdes, hanem, hogy mit akarsz kezdeni az adatokkal, hogyan szamolod at?
-
-
Ígérem, több topikba nem szúrom be ezt a kérdést
Szóval, olyan algoritmusra, vagy esetleg C implementációra volna szükségem, amely naaaaagyon hosszú /millió számjegy nagyságrendű/ pozitív egész számokat konvertál 2,3..-36 számrendszerek között. Találtam egy ilyet, de ez nagyon lassú. A Modern Computer Arithmetic-ban volt egy pársoros algoritmus, de az meg valahogy nem a várt eredményt adja.
-
WonderCSabo
félisten
válasz
WonderCSabo #3287 üzenetére
Ja megvan, a format stringben lehet megadni, pl.:
fscanf(file, "%10s", str)
-
ArchElf
addikt
válasz
WonderCSabo #3287 üzenetére
Úgy érti, hogy az előre definiált string hossznál is nagyobbat beolvas, ha akkora van a bemeneten (így túlcsordulhat a változó).
AE
-
WonderCSabo
félisten
válasz
Jester01 #3286 üzenetére
Igaz, vmiért úgy értelmeztem, hogy soronként egy szava van, lehet, hogy még az első feladatával kevertem össze.
ráadásul mérethatár nélkül tilos használni (túlcsordulás veszély).
Ezt hogy érted?
Szerk.: Jaaa, úgy, hogy egy nagyobb stringet olvas be, mint a tároló, és a tároló tömbbe akarja beírni? Hogy lehet neki megadni limitet, hogyan paraméterezve?
(#3288) ArchElf: Köszi, közben én is rájöttem.
-
Jester01
veterán
Jelzem, az fscanf(file, "%s", str) nem sorokat olvas hanem szavakat, ráadásul mérethatár nélkül tilos használni (túlcsordulás veszély). Sorok olvasására egyébiránt az fgets való.
-
WonderCSabo
félisten
válasz
it_service #3284 üzenetére
Hogy először?
-
it_service
csendes tag
köszi, amúgy úgy is működik ahogy először írtad, csak 2 if kell bele.
-
WonderCSabo
félisten
válasz
WonderCSabo #3282 üzenetére
Áh, most vettem észre, hogy véletlenül elcsesztem az egyenlőtlenséget:...
tömb mérete > string hossza
-
WonderCSabo
félisten
válasz
it_service #3281 üzenetére
Félreérted a C string kezelését. Stringeket akarsz beolvasni, nem?
C-ben a stringek karakter tömbbökként vannak reprezentálva. Minden string végén kell lennie egy lezáró 0 -nak a tömbben. Ez nem a tömb végét, hanem a string végét jelzi, ergó a tömbben bárhol, lehet. A stringnek bele kell férnie a lezáró nullával együtt a tömbbe, különben gáz lesz (ergó a tömb mérete > string hossza - 1).
Tehát, amikor Te beolvastad a tömbbe a stringet, akkor nem az n-dik string sort írtad bele, és tároltad az összeset, hanem csak mindig felülírtad az előzőt, mivel egy karaktertömb egy stringet tárol (persze még ez se ment, mivel rossz volt a szintaktika).
Átírtam, így mindig beolvassa a stringet, és ha a 100-at olvasta be, akkor kiírja.
Ha stringek tömbjét akarsz, akkor karakterek mátrixában kell tárolnod őket.
A számlálóra pedig 100-at kell vizsgálnod, nem 99-et, mivel a vizsgálat előtt növeled meg azt, nem utána, és 0-ról indul.
system hívásokat meg ne használj ilyenre. Ha meg akarod akadályozni az ablak bezáródásást, hívj egy getchar() -t a return előtt. Return pedig mindig kell a main fv.-ben ... (meg persze minden nem void fv.-ben)
#include <stdio.h>
int main()
{
FILE* file = fopen("beolvas.txt", "r");
char str[200];
int szamlalo = 0;
while(fscanf(file, "%s", str) != EOF)
{
szamlalo++;
if(szamlalo == 100)
printf("%s", str);
}
fclose(file);
getchar();
return 0;
} -
it_service
csendes tag
válasz
WonderCSabo #3280 üzenetére
#include <stdlib.h>
#include <string.h>
#include <stdio.h>int main()
{FILE* file = fopen("beolvas.txt", "r");
char num[200];
int szamlalo = 0;while(fscanf(file, "%s", &num) != EOF)
{
szamlalo ++;
if (szamlalo == 99)
printf("%s" num[szamlalo]);
}
fclose(file);system("PAUSE");
}ennyit sikerült ki logikáznom belőle, szerintem így ésszerű hiszen belerakja a 200 sort a tömbbe és ha az indexére hivatkozok ki kellene írnia mi van az adott indexen.
-
WonderCSabo
félisten
válasz
it_service #3279 üzenetére
Hát akkor mutasd meg a kódot, és megnézzük mi a baja.
-
it_service
csendes tag
sajna sehogy sem akar összejönni
-
WonderCSabo
félisten
válasz
it_service #3277 üzenetére
Lehet így is. Igazából tömbbe csak akkor kell tárolnod, ha később is akarod még használni az értékeket, ha csak ki akarod írni, akkor elég a feltételes kiírás, nem kell a tárolás. Illetve a tömb mérete fix, ergó ha a fájl mérete ismeretlen, akkor egy jó nagy tömböt kell deklarálnod, amibe biztos belefér az adat.
-
it_service
csendes tag
Köszi srácok, WonderCSabo amilyen példát írtál néhány hsz-el előbb azt átalakítom úgy hogy pl: int num > char valami[];? Ebbe beolvasom majd a while ciklusban ezt írom be hogy int szamlalo = 1; szamlalo++; majd egy if(szamlalo == 100) printf("%s", valami[99]); Valahogy így gondoljátok?
-
bucsupeti
senior tag
válasz
it_service #3274 üzenetére
tömbbe (listába) olvasod be a sorokat, majd beindexelve kiíratod.
-
WonderCSabo
félisten
válasz
it_service #3274 üzenetére
Olvasod a sorokat, és közben növelsz egy számlálót. Ha a számláló 100-hoz ér, kiírod az aktuális sort.
-
it_service
csendes tag
Esetleg még annyit kérdezhetnék hogyha egy bizonyos sort szeretnék csak ki íratni azt hogyan tudnám? Itt olyan szerkezetről lenne szó hogy KERESZTNÉV-IPCÍM egymás mellett szóközzel elválasztva, és például ki szeretném outputba írni a képernyőre a 100-adik sort.
-
it_service
csendes tag
válasz
WonderCSabo #3271 üzenetére
köszi szépen, működik a program.
-
it_service
csendes tag
válasz
WonderCSabo #3271 üzenetére
ok köszi ki is próbálom az este
-
WonderCSabo
félisten
válasz
it_service #3270 üzenetére
Igen, paritást így lehet ellenőrizni.
-
it_service
csendes tag
akkor valami ilyesmi legyen a while-on belül:
if(num % 2 == 0){
//páros(kiratom a fileba)
} -
WonderCSabo
félisten
válasz
it_service #3268 üzenetére
Akkor baromi egyszerű az eset. Simán a ciklusmagban végzel egy számlálást a num változót vizsgálva, aztán a ciklus lefutása után kiírod a számot egy fájlba.
-
it_service
csendes tag
minden egyes sorban 1 darab int van, tehát soronként
-
WonderCSabo
félisten
válasz
it_service #3266 üzenetére
Ez a kód, amit írtam, egy olyan fájlt feltételez, amiben intek whitespacekkel van elválasztva. (én így értelmeztem az első hszedet). Szépen beolvassa az adott int-et, aztán te meg meg tudod vizsgálni a ciklusmagban, hogy az adott int páros-e vagy sem.
Vagy Neked soronként van több int, és soronként kell a párosokat megszámolni, nem az egész fájlban?
-
it_service
csendes tag
így van, köszi eddig nekem is tökéletesen működik, csak azt nem tudom hogy hogyan vizsgáljam le a sorokat?
-
WonderCSabo
félisten
válasz
it_service #3264 üzenetére
#include <stdio.h>
int main()
{
// megnyitjuk a filet olvasásra
FILE* file = fopen("valami.txt", "r");
int num;
// beolvasunk egy intet a fileból soronként, amíg nincs vége
while(fscanf(file, "%d", &num) != EOF)
{
// itt megnenézed páros-e, stb.
}
fclose(file);
return 0;
} -
it_service
csendes tag
Hellósztok, egy kis segítséget szeretnék kérni, egy php kód legenerál x sort, amiben intek vannak, és ezeket kilöki egy valami.txt-be írni szeretnék 1 progit ami megszámolja mennyi ebben a páros, majd kiirja egy másik .txt-be, de a file beolvasás után már elakadok, valaki tudna nekem segíteni? A file ki íratással sincs gond. C-be nem szoktam fejleszteni ezért is okoz nekem nehézséget.
Köszönöm
-
válasz
WonderCSabo #3262 üzenetére
Heló!
A rand() % 100 - 0 és 99 "intervallum" tényleg elírtam bocsi! A második esetében pedig csak a végtelenül leegyszerűsíteni akartam a dolgot!
Kicsit félreérthetőre sikeredett.
mobal,
-
WonderCSabo
félisten
Nem, nem, nem.
% 100 mindig azt az intervallumot jelenti, ahonnan akarod a random számot
A % az egy teljesen szabályos aritmetikai operátor C-ben, semmi intervallum előállító, vagy ilyesmi. A % visszaadja a szám osztóval való osztásának maradékát (modulo). Pl. 12 % 5 az 2. Valóban, amikor véletlen számokat állítunk elő, a % operátort hívjuk segítségül. Ugyanis a rand() fv. egy baromi nagy számot ad vissza. Ha ezt mondjuk 100-al modulozod le, akkor a nagy szám 100-al való osztásának lehetséges maradékát kapod vissza.
Tehát 100 esetében: 0 - 100
Nem 0-100 között, hanem 0-99 között. A maradék nem lehet 100, hiszen akkor már nem maradék, hiszen még egyszer megvan a nagy számban, az igazi osztási eredmény nőne eggyel. Ha pedig 1-100 között akarod, akkor simán hozzáadsz egyet a lemodulozott értékhez.
Tehát, a moduloval az intervallum hosszát adjuk meg, a hozzáadással pedig az eltolást.
j0k3r! megelőzött a mondandóm egy részében.
-
válasz
cooldongo #3258 üzenetére
A randomizálás úgy működik C esetében, hogy meghívod a rand() függvényt így:
rand() % 100
A % 100 mindig azt az intervallumot jelenti, ahonnan akarod a random számot előállítani. Tehát 100 esetében: 0 - 100 között. Ezért kell ugye hozzáadni + 1 -et, hogy 1 - 100 közül kapjad az értéket, továbbá ezért kell + 10 -et hogy a rand() % 20 az 10 és 20 közül adjon vissza jó értéket.
Célszerű továbbá a time.h fejfájlt includeolni és a main függvény elejére egy srand(Time(NULL)) -t beilleszteni.
-
cooldongo
tag
ha [1,60] intervalumba kell előállítanom 6 számot
for(i=0;i<6;i++)
{
a[i]=rand()%71-20;
}hogy kell megadni az intervallumot ezt láttam valahol de nem értem h miért,vki elmondaná,kösz
-
Sk8erPeter
nagyúr
válasz
cooldongo #3253 üzenetére
Itt nem hiszem, hogy használtad.
Később fejlődtél, ez becsülendő.
Na, most már vágod a függvény működését? Azt is, hogy hogyan tudod megvizsgálni a függvény visszatérési értékét?Gondold végig, mire is vagy kíváncsi, ilyenkor használd nyugodtan a magyar nyelvet először (vagy amilyen nyelven könnyebben tudsz gondolkodni, felőlem mongol is lehet
):
HA egybeesik, akkor:
kiírom, hogy fasza, egybeesik
EGYÉBKÉNT
kiírom, hogy vazze, nem esik egybena, ezt most fordítsd le szépen C-re (ha >>> if, egyébként >>> else, és így tovább), meg a kódod nyelvére, és akkor máris meglesz a megoldás... remélem így már kapiskálod.
(#3254) kingabo:
Inkább maradjon csak a visszatérési értéknél, nehogy rászokjon ilyen hülyeségekre, hogy a függvényen belül íratja ki... -
kingabo
őstag
válasz
cooldongo #3251 üzenetére
Ez már sokkal jobb.
Jól hívtad meg, viszont ennek megint nem szabadna fordulnia: int a visszatérési értéke az fv-nek, de nincs return sehol sem. Amennyiben elég a kiíratás, akkor int helyett legyen void az fv, ha kell egybeesik-e vagy sem, akkor használd (#3252) Sk8erPeter által leírt megoldást. -
cooldongo
tag
válasz
Sk8erPeter #3252 üzenetére
kösz,működik,am használtam a programkód gombot nekem úgy is jelenítette(elküldtem akkor is úgy van) meg a bemásolt forráskódot
-
Sk8erPeter
nagyúr
válasz
cooldongo #3249 üzenetére
Használd már azt a nyomorult Programkód gombot kérlek.
Kijelölöd a kódrészletet, majd rákattintasz erre a gombra, és máris normálisabban fog kinézni a beillesztett kód (lásd alább).
Szerk.: látom kingabo ugyanerre hívta fel a figyelmed, jogosan.int egybeesik(struct kor y, struct kor z)
{
...
int b;
...
return b;
}A b-t deklarálod, de nincs inicializálva sem, és értéket sehol nem kap. Akkor szerinted miért kéne visszaadnia a helyes eredményt?
return (y.x==z.x && y.y==z.y) ? 1 : 0;
bocs, ha lelőttem a poént...
-
cooldongo
tag
int egybeesik(struct kor y, struct kor z)
{
if(y.x==z.x && y.y==z.y)
printf("egybeesik");
else
printf("nem esik\n");
}
main()
{
struct kor r;
int i=1;
for(i=0;i<=2;i++)
{
printf("kerem az %d. kor x-et:\n",i+1);
scanf("%d",&r.x);
printf("kerem az %d. y-t\n",i+1);
scanf("%d",&r.y);
}
egybeesik(x,y)
printf("%d",egybeesik(...))
}
az egybeesiket h kéne meghívni -
kingabo
őstag
válasz
cooldongo #3248 üzenetére
Az a probléma, hogy stringként kérsz be adatot nem pedig számként.
(#3249) cooldongo: kérlek írd le saját szavaiddal, hogy mit csinál az egybeesik függvény. (nem azt, hogy mit kéne csinálnia) Egyből rájösz mi a gond.
Illetve, légy szíves programkódként beilleszteni a kódot, ahogy erre mindenki meg lett kérve az első hsz-ben. Ha úgy illeszted be, akkor tagold a kódot, hogy könnyebben olvasható legyen másoknak. (ha ez neked nem annyira fontos) Köszi.
-
cooldongo
tag
továbbra is az ominózus két pont egybeesik-e feladattal szenvedek eddig jutottam:
#include <stdio.h>
#include <string.h>struct kor{
unsigned r;
unsigned x;
unsigned y;
};int egybeesik(struct kor y, struct kor z)
{
char egybeesik,nemesik;
int b;
if(y.x==z.x && y.y==z.y)
return b;
}
main()
{
struct kor *pont;
int i=1;
hiba-> pont=(kor)calloc(i,sizeof(kor));
for(i=0;i<=2;i++)
{
printf("kerem az %d. kor x-et:\n",i+1);
scanf("%d",&pont[0].x);
printf("kerem az %d. y-t\n",i+1);
scanf("%d",&pont.y);
}
?-> egybeesik(x,y)
?-> printf("%d",egybeesik(...))
} -
cooldongo
tag
struct, majd fv visszaadjna h fiatal avagy sem:
#include <stdio.h>
#include<stdlib.h>
struct szemely{
char nev[30];
int kor;
};
int fgv(struct szemely sz){
if(sz.kor>18)
{
printf("felnott\n");
}
else
printf("fiatalkoru\n");
}
main()
{
struct szemely r;
printf("kerem az eletkorat");
scanf("%s",&r.kor);
fgv(r);
printf("%d eves",r.kor);system("pause");
}
mikor én adok meg neki a mainbe értéket(r.kor=20akkor jó, de én bekérni akarom a mainbe az életkort de akkor meg mindig fiatalt ad vissza, mi a hiba?
meg van
-
Rankerz
senior tag
Pointerek ,címaritmetika,referencia témakörben van valakinek jóféle anyaga? Úgy értem amiben nem csak az alapok vannak megemlítve esetleg.
-
Sk8erPeter
nagyúr
válasz
Korcsii #3244 üzenetére
Ne oltogassátok má' szegény csávót, elveszitek a maradék kedvét is.
Szerintem egyébként ebben az esetben ez az általad alkalmazott conditional operator talán logikusabb is, mint egy szétbontott if-else. Persze tényleg ekvivalens mindkettő, csak ilyen esetekre szerintem tipikusan jól alkalmazható, amit mutattál.
-
bucsupeti
senior tag
válasz
cooldongo #3240 üzenetére
Figyuszmá!
Ne "bazz"-ozz itt légyszíves, hanem inkább köszönd meg a segítséget! Az meg hogy leírod a számtechórán kapott feladatodat és oldjuk má' meg, nem éppen jó módszer a kezdésre. Ha beírtad volna a kódot ameddig eljutottál (amit később kérésre megtettél) akkor sokkal könnyebben tudunk segíteni, javasolni.És hogy tanulj is. Kérdezed, hogy if-el nem lenne-e egyszerűbb az egybeesés vizsgálata.
Az itt leírt módszer egy tipikusan C programozók által használt eszköz. Én magam is inkább az if szerkezetet használnám, nem pedig ezt a kiértékelő kifejezést. Egyébként mindegyik jó megoldás. Az if talán olvashatóbb.Jó programozás!
-
kispx
addikt
válasz
cooldongo #3240 üzenetére
még egy valami:
"írjon fv-t amely paraméterként kap két kor típusú struktúra címet és visszaadja hogy a két kör középpontja egybeesik vagy nem"
az fv függvény ha jól látom nem a kor címét várja.
És a memórialefoglalásnál és a for cikluson belül is bajok vannak.
És a feladat szerint a b feladatban definiált függvény meg kéne hívni
-
kispx
addikt
válasz
cooldongo #3235 üzenetére
Ha paraméterként kapja meg annak azt a két kör aminek a középpontját összeakarod hasonlítani, akkor miért definiálsz két másik kört?
A paraméterként kapott köröknek kell a középpontját összehasonlítani.b = kor1.x==kor2.x && kor1.y==kor2.y ? egybeesik : nem;
Gondolom előtte van egybeesik, és nem nevű konstansod definiálva. És ezekkel az értékekkel mikor tér vissza? (kell egy return b utasítás). És mi a függvény visszatérési típusa? -
cooldongo
tag
válasz
bucsupeti #3227 üzenetére
typedef struct {
unsigned r;
unsigned x;
unsigned y;
}kor;kor egybeesik(kor x, kor y)
{
int kor1,kor2;
int b;
b = kor1.x==kor2.x && kor1.y==kor2.y ? egybeesik : nem;}
main()
{
kor *pont;
int i=1;
pont=(kor)calloc(i,sizeof(kor));
for(i=0;i<=2;i++)
{
printf("kerem az %d. kor x-et:\n".i+1);
scanf("%d",&pont[0].x);
printf("kerem az %d. y-t\n",i+1);
scanf("%d",&pont.y);
}egybeesikbe van a gond , if-el nem egyszerűbb?
-
ArchElf
addikt
válasz
WonderCSabo #3231 üzenetére
Melyik részét, a deklarálást?
Így?
int i = 0;
for (; i < strlen(p); i++)AE
-
bucsupeti
senior tag
válasz
cooldongo #3226 üzenetére
A feladat nem bonyolult, aki picit (tényleg picit) foglalkozik programozással, az ezt kb 5 perc alatt megoldja.
Ha megírod hol akadtál el akkor segíteni fogok a továbblépésben.
Egy kis konkrétumot azért írok. A két kör középpontja akkor esik egybe, ha a középpont koordinátái páronként egyenlőek. Csak annyit akarok ezzel mondani hoyg nem kell sehogy "kiszámolni" a kör középpontját. -
cooldongo
tag
kicsit pofátlan leszek:S
de ebbe is segítenél pls:
a)definiáljon struktúrát típusdefinícióval(típus neve legyen kor) amely egy kör adatait tárolja:sugár nem negatív egész, kör középpontjának két koordinátája(két nem negatív egész)
b)írjon fv-t amely paraméterként kap két kor típusú struktúra címet és visszaadja hogy a két kör középpontja egybeesik vagy nem
c)írjon main fv-t amelyben két kor típusú változóba beolvassa a két kör adatait és a b) fv segítségével megállapítja hogy a két kör középpontja egybeesik-e és kiírja h "egybeesik" vagy "nem esik"majd ha ráérsz mert ez nagyobb lélegzetvételű sztem
a)pipa b)tom h kell de h számoljam ki a kör középpontját? -
kispx
addikt
válasz
cooldongo #3223 üzenetére
A feltételt nem értem, mert "van egy fv amely paraméterként kap egy stringet és egy betűt"
gondolom akkor a függvény hívása így néz ki
fv ("ez itt a string", 'e')int fv(const char* p, char c)
{
int i = 0;
int v=-1;for (; i< strlen(p); i++)
if (p[ I ]== c)
{v = i; break;}return v;
}Szerk.: jelenleg nem tudom kipróbálni, mert nem olyan gép előtt vagyok amin van C fordító, de kb így néz ki az a, a b-t meg már innen be tudod fejezni.
-
kispx
addikt
válasz
cooldongo #3221 üzenetére
Meddig jutottál el benne?
shinodas
http://stevenkobes.com/ctest.html
Ebben egy-két feladatot érdekesnek találtam (személy szerint). Viszont ez csak tesz jellegú- -
cooldongo
tag
ebbe kérnék segítséget ha valaki megírná nagyon hálás lennék érte
nagyon kezdő vok még ebbea) van egy fv amely paraméterként kap egy stringet és egy betűt majd megkeresi és visszaadja az első ilyen betűjének az indexét ha nincs benne ilyen betű akkor -1-et,
b) van egy main fv amelyben beolvas egy szöveget és az a) függvény segítségével megkeresi benne az első 'e' betűt és kiírja a szöveget valamint az 'e' betű első előfordulásának indexétegyszerű de valahogy nem jó:S
-
shinodas
tag
Srácok tudtok ajánlani érdekes oldalakat, ahol tutorialok, példák, érdekes feladatok stb van C témakörben?
-
Zefír
őstag
válasz
Sk8erPeter #3217 üzenetére
Nem voltam felháborodva ne érts félre
Egyébként van a cspatban aki ért a programozáshoz, én inkább honlapszerkesztést vágom, de programozni is megakarok tanulni. Meg c-ben ilyen átlagoló programot meg hasonlókat már írtam. -
kingabo
őstag
Ja hogy Ti azt az idióta összekattintgatós izét használjátok? Azzal 10 percet bohóckodtam, de hogy azzal összehozni egy bt-s távirányítást elég esélytelen.
Java esetén lejos, C esetén nxc, meg van saját assembly-je is az nbc, ezekkel programozható, a "doboz pakolós", összekattintgatós csak játék 5 éveseknek. Szerintem. -
Sk8erPeter
nagyúr
F×ngom sincs, hogy mennyit kell hozzá programozni, de furcsa volt, hogy robotvezérlős versenyen akartok részt venni, ahol elvileg szükség van programozásra is, de nem tudsz programozni, és mégis indulni szeretnél. Mondjuk ha elhivatott vagy, és utánanézel, az jó. De azért nem kell ám annyira felháborodni, nem sértegetés a célom.
-
Zefír
őstag
válasz
Sk8erPeter #3215 üzenetére
NXT-hez nem nagyon kell tudni programozni
csak pont az alapokat.
-
Zefír
őstag
Sziasztok!
Egy robot versenyre készülünk pár haverommal, de benne van a verseny kitételben, hogy csak az általunk írt programokkal irányíthatjuk a robotor, és mielőtt elkezdődik a verseny, átnézik a sw-t, és belekérdeznek, hogy mit miért írtunk bele, tehát nem másolgathat az ember eszeveszettül kódokat.Na most az lenne a feladatom, hogy írjak egy alkalmazást, amivel lehet előre, hátra, jobbra és balra irányítani a robotot. Én úgy gondoltam ki a feladatot, hogy laptopról vagy az még jobb lenne, ha telefonról , bluetoothon komunikálna a gép( telefon) és a robot, hiszen ilyen NXT robotot építünk, nem tudom kinek mit mond, és ezekben van bluetooth.
Na most az lenne a kérdésem, hogy a bluetooth mennyire nehezíti meg a feladatot? Nem vagyok nagyon jártas a programozásban, de ennek a versenynek ez a lényege, hogy rákényszerítsen arra, hogy utána járjak, kérdezzek. -
ArchElf
addikt
válasz
shinodas #3210 üzenetére
Még annyi hozzá, hogy ez így teljesen determinisztikus - mert ha a ki lehet következtetni a véletlenszám legenerálásának idejét, akkor ez minden lesz, csak nem random (sőt, ha ezt az eljárást egy mp-en belül többször meghívod, akkor mindig ugyanazt a "véletlenszámot" adja majd vissza - ha mindig inicializálsz a véletlenszám generálás előtt).
AE
-
shinodas
tag
Köszönöm szépen, nagyon korrekt válaszok!
-
Chipi333
csendes tag
válasz
shinodas #3206 üzenetére
Az srand( time(NULL) ) beállítja a random fv kezdeti értékét az aktuális időre. A rand() pedig generál egy véletlenszámot (ami nem annyira véletlen). A %9 azért kell hogy 0-8 intervallumra és ne az int telje értékkészletére generáljon.
Az srand( time(NULL) ) azért kell mert a rand fv egyébként teljesen determinisztikus, szóval azonos kezdeti értékről indítva mindig ugyanazt a sorozatot generálná. Ezért általában az idő alapján szokás indítani, mert az jó eséllyel minden futtatáskor más lesz.Szerk.: De sokakat megmozgatott ez a téma
-
Karma
félisten
válasz
shinodas #3206 üzenetére
Az egész mögött egy pszeudo-véletlenszám generátor van, ami egy kezdőérték (seed) alapján generál számokat. (Nem valódi véletlenszámok, de ez most mindegy.)
A srand függvény szolgál ennek a seed értéknek a beállítására. A time(NULL) függvény az aktuális rendszeridőt adja vissza egy egész szám formájában (1970. január 1. óta eltelt másodpercek száma); ha ezt adod meg seednek, gyakorlatilag minden másodpercben más véletlenszámokat kapsz.
Azonos seed mellett meg ugyanazok a számsorozat jönne ki a rand() hívogatása során.
A rand() egyébként ez a seed meg a belső algoritmusa alapján egy 0 és RAND_MAX (legalább 32767, maximum MAX_INT, környezetfüggő) közötti egész számot ad vissza. Ha ennek veszed a kilences maradékát, 0 és 8 közötti számokat kapsz.
Szerk.: Eh, lassú voltam.
-
Jester01
veterán
válasz
shinodas #3206 üzenetére
A srand inicializálja a véletlenszám generátort valami kiinduló érték alapján. Azonos kiindulási értékből mindig azonos sorozat lesz (debuggoláshoz jó például). Hogy mindig más legyen, az aktuális idő van megadva.
A rand() az visszaad egy egész számot a [0, RAND_MAX] intervallumból. A % az nyilván a maradékképzés, tehát végül is a [0, 8] intervallumban fogsz számokat kapni.
-
shinodas
tag
srand(time(NULL));
x=rand()%9;Egy programban használok egy ilyen random szám generálást, de ezt csak úgy neten találtam. Elmondanátok, hogyan működik ez pontosan?
-
hamham
tag
Hello
Hogy tudom átadni a fgv-nek paraméterként a struktúra címét?
ez a struktúrám, 2 kör struktúra címét kéne átadni
typedef struct kor{
int r,x,y;}kor;
Ú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!
- Autós topik
- Prohardver app (nem hivatalos)
- iPhone topik
- Apple iPhone 15 Pro Max - Attack on Titan
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Google Pixel topik
- További aktív témák...
- Phanteks NV5 MK2 White (PH-NV523TG DMW02)
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Samsung Galaxy S22 128GB, Kártyafüggetlen, 1 Év Garanciával
- Azonnali készpénzes nVidia RTX 4000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- ÁRGARANCIA! Épített KomPhone Ryzen 5 5500 16/32/64GB RAM RTX 4060 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest