Hirdetés

2024. június 14., péntek

Gyorskeresés

Hozzászólások

(#4051) Karma válasza krisztianAMG (#4050) üzenetére


Karma
félisten

Elvileg ha az a _kbhit() függvényhívás nem lenne ott, ennek a kódnak működnie kéne - az F1-12 és más spéci gombok kezelése már benne van a switchben (00 és E0). Próbáld meg azt az if-et kivenni, egyébként sincs semmi értelme.

Ezt most csak spekulálom, de szerintem ha az benne van, végtelen ciklusban pörgeti a CPU-t (egy magot 100%-on), amíg nem ütsz le egy billentyűt. Ami nagyon gáz.

[ Szerkesztve ]

“All nothings are not equal.”

(#4052) krisztianAMG válasza Karma (#4051) üzenetére


krisztianAMG
senior tag

Kivettem a ciklust, futtatást: 1-es beüt, Enter. Szépen ki is írja, hogy "Ahoj". Utána F1, de egy 1-est ír, újabb Enter után pedig egy újabb "Ahoj"-t.

Egyébként igazad volt, 86%-on pörgette szegényt. És ezt kaptuk kiindulási alapnak... :U
Esetleg javaslat, merre induljak, hogy normálisan legyen megoldva?

A feladat egy egyszerű játék: Kidob egy random karaktert, majd méri az idő, ami alatt azt a gombsoron leütöd. Plusz kiegészítésként kell tudnia: F1- Help, F2 - indítás...

[ Szerkesztve ]

(#4053) Davs válasza Jester01 (#4048) üzenetére


Davs
tag

Hmm erre nem is gondoltam, jo otletnek tunik..ki is probalom :)

(#4054) Zsolt1


Zsolt1
tag

Sziasztok!
Egy feladathoz muszáj lenne használnom a magyar ékezetes betűket. Sajnos fordításkor már jelzi is a CodeBlocks, hogy a karakterkódolással baj van és utána futtatáskor is rosszul jelennek meg a betűk. Többféle módszerrel próbálkoztam már:
1. #include <local.h> + setlocal(LC_ALL,""); - Ez egy darabig működött is, de amikor következőre megnyitottam CodeBlocks-al akkor már nem volt jó.
2. Olvastam, hogy át kell állítani a kódlapot 852-re - system("CHCP 852") - de ez sem jó, mivel ez rendesen kiírja, hogy "Az aktív kódlap: 852", de utána ugyan úgy rosszul kezeli az ékezetes karaktereket. :O
CodeBlocks-ban Windows-1250 van beállítva karakterkódolásnak, de próbáltam már UTF-8-al is(Nem tudom miért hittem benne, hogy segítene, de gondoltam megpróbálom :DD ). A kérdés lényege az lenne tehát, hogy milyen módszer van arra, hogy fordításkor és futtatáskor is rendesen kezelje a CodeBlocks az ékezetes karaktereket?

(#4055) Zsolt1 válasza Zsolt1 (#4054) üzenetére


Zsolt1
tag

Ezt a két oldalt találtam a problémával kapcsolatban: link1, link2, de sajnos valamiért egyik módszer sem működött :( .

[ Szerkesztve ]

(#4056) nyunyu


nyunyu
félisten

Adott egy standard C kod, ami eredetileg UNIX alatt lett fejlesztve, mezei parancssoros program.

Meg lehet ezt a kodot etetni valami modern windowsos fejlesztokornyezettel, hogy lepesrol lepesre tudjam debugolni, nezni hogyan alakulnak a belso valtozok aktualis ertekei?

Hello IT! Have you tried turning it off and on again?

(#4057) nyunyu válasza nyunyu (#4056) üzenetére


nyunyu
félisten

Sikerult megetetni Visual Studio 2010-zel, be kellett allitani a projekt tulajdonsagainal Configuration properties/C/C++/Preprocessor alatt a Preprocessor definitions-ben, hogy "_CRT_SECURE_NO_WARNINGS"
Igy mar nem ugat az strcpy es tsai fuggvenyek elavultsagara, hanem lefordul.

Viszont elojott az a kerdes, hogyan lehet beallitani, hogy milyen fajlt toljon be a fordito az stdin-re?
Linux/UNIX alatt "cat fajlnev | program"-mal kell futtatni.

Meg kene maradnia platformfuggetlennek a kodnak, igy nem szivesen irnam at a fajlkezeles reszet.

Hello IT! Have you tried turning it off and on again?

(#4058) nyunyu válasza nyunyu (#4057) üzenetére


nyunyu
félisten

Viszont elojott az a kerdes, hogyan lehet beallitani, hogy milyen fajlt toljon be a fordito az stdin-re?
Linux/UNIX alatt "cat fajlnev | program"-mal kell futtatni.

Meg jo, hogy DOS/Windows parancssor is POSIX kompatibilis, igy mukodik az input/output atiranyitasra szolgalo <,>

Igy a programot igy kell futtatni:
program <fajlnev

Azt meg be lehet allitani a VSben, hogy milyen parancssori parameterekkel debugolja a programot. (Configuration properties/Debugging/Command Arguments)

Hello IT! Have you tried turning it off and on again?

(#4059) buherton válasza nyunyu (#4058) üzenetére


buherton
őstag

Segítőkész társra akadtál :DDD .

tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!

(#4060) Vasinger!


Vasinger!
nagyúr

Nem tudom, hogy lett már e linkelve, de ez egy nagyon jó oldal ha valaki meg akar tanulni C-ben programozni: KATT

(#4061) Zsolt1 válasza Zsolt1 (#4055) üzenetére


Zsolt1
tag

Az én kérdésemmel kapcsolatban senki nem tud semmi hasznosat, ami segíthetne?

[ Szerkesztve ]

(#4062) Retekegér


Retekegér
HARDVERAPRÓD

Kéne valami tipp. Az a gondom, hogy a Code::Blocks debugger módjában a Watches ablak üres marad. Mit csinálok rosszul?

<< Heimdal >>

(#4063) kingabo válasza Retekegér (#4062) üzenetére


kingabo
őstag

Ha olyan mint a többi ide, akkor neked kell felvenni oda a változókat. :U Vagy jobb klikk a változón és add watch (vagy hasonló), vagy szimplán beírod a változó nevét.

(#4064) Retekegér válasza kingabo (#4063) üzenetére


Retekegér
HARDVERAPRÓD

Próbáltam előtte, de rossz helyre írtam (oda, ahol amúgy az értéke jelenik meg). Viszont mostmár sikerült és működik. Köszi!

<< Heimdal >>

(#4065) lockdown90


lockdown90
senior tag

Sziasztok!

adott egy stuktura amiben konyvcimeket,evszamokat tarolok, es ki szeretnem iratni egy eljarassal a legregebbi konyv cimet akkor ezt hogy tudom megtenni? Megtudom keresni a legkorabban kiadott konyv evet, de a hozzatartozo nevet az istennek se tudom kiiratni.

void kiir(nyil tomb[]){

int i;
int min=tomb[0].kiadev;

for(i=0; i<N; i++){
if(tomb[i].kiadev<min){

tomb[i].kiadev=min;

}

}
printf("Legregebbi konyv: %d\n Hozza tartozo cim: %s",min,tomb[i].cim);


}

tudom,hogy a hozzatartozo cim kiirazasa eleve nem lehet jo mivel cikluson kivül nem vonatkozik ra az (i), de nem tudom hogyan tudnam kiiratni a legkorabbi evszamhoz megfelelo cimet.(/I)

[ Szerkesztve ]

i7 13700k - 32Gb DDR5 - RTX4070S

(#4066) Bobrooney válasza lockdown90 (#4065) üzenetére


Bobrooney
senior tag

void kiir(nyil tomb[]){

int i;
int min=tomb[0].kiadev;

for(i=1; i<N; i++){
if(tomb[i].kiadev<min){

min = i;

}

}
printf("Legregebbi konyv: %d\n Hozza tartozo cim: %s",min,tomb[min].cim);


}

[ Szerkesztve ]

(#4067) lockdown90 válasza Bobrooney (#4066) üzenetére


lockdown90
senior tag

biztos hogy jo igy? :)

i7 13700k - 32Gb DDR5 - RTX4070S

(#4068) Bobrooney válasza lockdown90 (#4067) üzenetére


Bobrooney
senior tag

gondoltam megpróbálod, nem futtattam le.
tomb.kiadev=min; // de ez itt wtf? a kiadási év lesz a minimum?

[ Szerkesztve ]

(#4069) buherton válasza lockdown90 (#4067) üzenetére


buherton
őstag

Nem. Így lesz helyes. Ugyanis a kiadási évet, és annak az indexét nem lehet egy változóban tárolni. Külön kell, mert a ciklusban a kiadási év a fontos, hiszen azzal nézzük meg hogy az adott könyv régebbi-e, de közben le kell tárolunk, hogy melyik volt ez, ami a végén szükséges.

N változó honnan jön? Használj inkább struktúra pointert, és mivel nem változik a struktúra, használj const kulcsszót (kettő is kell majd).

void kiir(nyil tomb[])
{

int i, minIndex;
int min=tomb[0].kiadev;

for(i=1; i<N; i++)
{

if(tomb[I].kiadev<min)
{
min = tomb(i).kiadev;
minIndex = i;
}

}
printf("Legregebbi konyv: %d\n Hozza tartozo cim: %s",tomb[minIndex].kiadev,tomb[minIndex].cim);

}

[ Szerkesztve ]

tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!

(#4070) Bobrooney válasza buherton (#4069) üzenetére


Bobrooney
senior tag

jah igaz, azt most nem figyeltem :))

(#4071) lockdown90


lockdown90
senior tag

koszonom szepen a segitseget, meg annyit szeretnek kerdezni, hogy ha adott
egy hasonlo feladat, hogyan lehetne kiiratni az elso olyan hallgato nevet es indexet akinek az atlaga 3.5 felett van?

i7 13700k - 32Gb DDR5 - RTX4070S

(#4072) Bobrooney válasza lockdown90 (#4071) üzenetére


Bobrooney
senior tag

az átlaguk már tudható?

if(hallgato[i].atlag > 3.5)
{
printf
}

(#4073) lockdown90 válasza Bobrooney (#4072) üzenetére


lockdown90
senior tag

igen, de igy minden 3.5 feletti hallgatot kiir :S

i7 13700k - 32Gb DDR5 - RTX4070S

(#4074) lockdown90 válasza lockdown90 (#4073) üzenetére


lockdown90
senior tag

nah koszi kiirja, hulyeseget mondtam xd

i7 13700k - 32Gb DDR5 - RTX4070S

(#4075) stranger28


stranger28
addikt

Üdv!

A feladat, amit kaptam a következő:

Írjon programot, amely a standard bemenetről legfeljebb 30 karakter hosszúságú sztringeket olvas mindaddig, amíg olyan sztringet nem olvas, amelyben kizárólag különböző kezdőbetűvel kezdődő szavak szerepelnek.

Na, most én ezt megcsináltam, de szerintem ennél rövidebb megvalósításra gondoltak, így érdekelne, hogy ki hogyan oldaná meg/mi a legegyszerűbb módja ennek. :R

(#4076) Jester01 válasza stranger28 (#4075) üzenetére


Jester01
veterán

Aki ezt a specifikációt írta azt fel kellene pofozni ;]

Mi az, hogy stringeket olvas? Sorokat, gondolom, aminek a végén valamilyen soremelés van.
Mit csináljon, ha több mint 30 karakter egy sor?
Hogyan definiáljuk a szavakat? Írásjelekkel mi a helyzet?
Milyen ábécét használjunk - magyart vagy angolt? Előbbi esetén mi legyen a kettősbetűkkel? Kisbetűk és nagybetűk egyformák?

Hirtelen csak ennyi problémát látok ami nélkül tulajdonképpen el sem lehet kezdeni.

Jester

(#4077) stranger28 válasza Jester01 (#4076) üzenetére


stranger28
addikt

Egyetértek, trehány csöppet, de most nem ez a lényeg, feltételezd a legegyszerűbb esetet. :DDD

(#4078) Jester01 válasza stranger28 (#4077) üzenetére


Jester01
veterán

#include <stdio.h>
#include <string.h>

int main()
{
unsigned char stats['z' - 'a' + 1] = {0, };
int duplicate = 0;
int word = 1;
int c;
while((c = getchar()) != EOF) {
if (c == '\n') {
if (duplicate == 0) break;
memset(stats, 0, sizeof stats);
duplicate = 0;
word = 1;
continue;
}
if (c == ' ') {
word = 1;
continue;
}
if (word == 0) continue;
word = 0;
c -= 'a';
if (c < 0 || c >= sizeof stats) continue;
duplicate = (stats[ c ]++ > 0);
}

return 0;
}

Hosszt nem ellenőriz, csak angol kisbetűs szavak számítanak és csak szóköz után.

[ Szerkesztve ]

Jester

(#4079) stranger28 válasza Jester01 (#4078) üzenetére


stranger28
addikt

:R

Ez határozottan rövidebb, mint az enyém. :DDD

(#4080) lockdown90


lockdown90
senior tag

Azt hogy lehetne megoldani h bekeresnel space is lehet a szovegben:
pl scanf-el ugye csak igy lehet h Toth.Peter, gets()-et ugye nem hasznaljuk
fgets-el viszont a for ciklusnal ugrik kerdekeset.

fgets(tomb[i].nev,100,stdin);

[ Szerkesztve ]

i7 13700k - 32Gb DDR5 - RTX4070S

(#4081) Bobrooney válasza lockdown90 (#4080) üzenetére


Bobrooney
senior tag

Szerintem fflush-el kell üríteni a stdin-t.

(#4082) skylaner válasza lockdown90 (#4080) üzenetére


skylaner
senior tag

Ha csak fgets()-t használsz elvileg nem lehet ilyen gond.
Ha van közte scanf() akkor az a baj.
Minden scanf() után ürítsd az input stream buffert. ( hívd meg az alábbi fgv-t)

void input_stream_cleaner()
{
char c=0;

while (c != '\n' && c != EOF) { c = getchar(); }
}

(#4083) lockdown90


lockdown90
senior tag

Abban szeretném ismét a segítségeteket kérni, hogy adott egy struktura, amiben kul tipusu adatokat tarolok
egy konyvrol (konyvek adatai). Namos letrehozok egy nyil struktura tipusu tombot amit forral toltogetek fel, sikerul is betoltogetni, de ennel a reszfeladatnal elakadok:

-éves kölcsönzések száma (10 db szám, az első szám a könyv tavalyi kölcsönzéseinek száma..., a tízedik szám a könyv 10 évvel ezelőtti kölcsönzéseinek száma).

hogy tudom megcsinalni,hogy az utolso kerdesnel amikor kerem be a kolcsonzesek szamat 10db szamot tudjak megadni, irtam ra egy kulon eljarast forral, de csak 5-ig szamol utana lefagy, ugyan ezt a strukturaban levo tombot akarom elerni mint az elott elevo eljarasnal tomb.kolcsszam. de 5 szamot enged beirni csak, lefagy sajnos.

#include <stdio.h>
#define N 1


typedef struct nyil

{

char szerzo[30];
char cim[30];
int kiadev;
float kiadar;
char kolcsonozve[30];
int kolcsszam[11];




}nyil;

void beker(nyil tomb[])

{
int i;
for(i=0; i<N; i++)
{

printf("Add meg a szerzot:");
scanf("%s",tomb[i].szerzo);
printf("Add meg a konyv cimet:");
scanf("%s",tomb[i].cim);
printf("Add meg a kiadas evet:");
scanf("%d",&tomb[i].kiadev);
printf("Add meg a kiadasi arat:");
scanf("%f",&tomb[i].kiadar);
printf("Kikolcsonozve?:");
scanf("%s",tomb[i].kolcsonozve);




}
}
void kolcs(nyil tomb[])
{
int i;
printf("Eves kolcsonzesek szama(10db szam):");
for(i=0; i<11; i++)
{
scanf("%d",&tomb[i].kolcsszam);
}

}

void kiir(nyil tomb[])
{
int i;
for(i=0; i<N; i++)
{
printf("Szerzo: %s\n",tomb[i].szerzo);
printf("Cim: %s\n",tomb[i].cim);
printf("Kiad. ev: %d\n",tomb[i].kiadev);
printf("Kiad. ar: %d\n",tomb[i].kiadar);
printf("Kolcsonozve: %s\n",tomb[i].kolcsonozve);
printf("Eves kolcs szam: %d\n",tomb[i].kolcsszam);

}


}
int main()
{

nyil tomb[3];
beker(tomb);
kolcs(tomb);
kiir(tomb);

system("pause");
return 0;
}

nem tudja tarolni rendesen?

[ Szerkesztve ]

i7 13700k - 32Gb DDR5 - RTX4070S

(#4084) skylaner válasza lockdown90 (#4083) üzenetére


skylaner
senior tag

A nyil tömböd 3 elemű: nyil tomb[3];
A kolcs() fgv--ben 0-tól 10. elemig akarod bejárni a 3 elemű tömbödet.
Egyszerűen túl-indexeled.

Amúgy nem csak 1 db könyv adatát kéri be, írja ki?
#define N 1
for(i=0; i<N; i++)

(#4085) lockdown90 válasza skylaner (#4084) üzenetére


lockdown90
senior tag

de a kolcs()-ben nincs N konstans. de akkor mit kene csinalni hogy jol kerje be? de a int kolcsszam[11]; 10 elemu :SS

i7 13700k - 32Gb DDR5 - RTX4070S

(#4086) skylaner válasza lockdown90 (#4085) üzenetére


skylaner
senior tag

De a nyil tomb[3] !!!3 elemű!!!!
for(i=0; i<11; i++)
scanf("%d",&tomb[i].kolcsszam);

tomb[0].kolcsszam, tomb[1].kolcsszam, tomb[2].kolcsszam tomb[3].kolcsszam ... tomb[10].kolcsszam
A feketével jelzett elemek nem léteznek!

Te ezt akarod:
for(i=0; i<11; i++)
scanf("%d",&tomb[N].kolcsszam[i]);

(#4087) hunterrop8


hunterrop8
csendes tag

sziasztok, egyetemen most kezdtünk el programozni és lenne egy kérdésem. A feladat az, hogy töltsünk fel egy 100elemes stringet 'a' kezdőértékkel, és utána 0.25-el csökkenjen mindig a többi. Aztán meg kell keresni, h hány olyan van ami egész, és nagybetű. Ezek még mennek is.
De van egy olyan feladat, hogy saját függvényben meg kell számolni a mássalhangzók, és a magánhangzók számát, és ugye úgy, hogy amikor a mainben a return 0-nál vége a programnak ott kiírja őket. Ezt eddig nekem csak úgy sikerült, hogy két külön sajátfüggvényben számoltam meg őket külön.
A kérdésem az lenne, hogyan lehet megcsinálni, hogy egy saját függvénnyel száoljam meg őket? (mert amikor így próbálom akkor a return után csak az egyket tudom beírni, és akkor a mainbe a mgh-hoz és az msh-hoz is ugyan azt írja.)
Valaki tudna segíteni? Leírni a sajátfüggvényt, meg h a mainbe mi kell hozzá esetleg? Köszönöm :) :)

(#4088) Jester01 válasza hunterrop8 (#4087) üzenetére


Jester01
veterán

Ha egy függvényből két értéket akarsz visszaadni akkor használj struktúra típusú visszatérési értéket vagy pointereket.

struct result {
int vowels;
int consonants;
};

struct result count(const char* text) { ... }
int main() {
struct result r = count("...");
printf("%d %d\n", r.vowels, r.consonants);
return 0;
}

-vagy-

void count(const char* text, int* vowels, int* consonants) { ... }
int main() {
int vowels, consonants;
count("...", &vowels, &consonants);
printf("%d %d\n", vowels, consonants);
return 0;
}

[ Szerkesztve ]

Jester

(#4089) hunterrop8


hunterrop8
csendes tag

Köszi szépen a választ, közben lenne még egy kérdésem, a következő a feladat:
10 elemű tömböt töltsön fel egész értékekkel. a beolvasást sajátfüggvénnyel végezze számjegyenként enterig. a szám legfeljebb 4jegyű decimális lehet.
Ezt hogy?? Én úgy próbáltam, h a sfgv-ben bekérek 10elemet, azokat tömbe teszem, de azt hogy tehetem át a mainbe? vagy nem is így kéne?

[ Szerkesztve ]

(#4090) bucsupeti válasza hunterrop8 (#4089) üzenetére


bucsupeti
senior tag

irj egy függvényt ami bekér egy adott hosszuságú egész számot és visszaadja azt.
ezt hivogasd egy for ciklusba és tedd bele a visszaadott értéket a tömbbe.
a main lényege kb ez lenne:
for(i=0;i<10;i++)
t=egeszbeker(4);

az egeszbeker() fv paraméterezésében én megadnám a max hosszat.

persze ellenörzések stb kell még hozzá.

"Nem gond ha nem vágod a párologtatók bináris nyelvét..."

(#4091) buherton


buherton
őstag

Kezd nagyon felidegesíteni az Eclipse. A fordítás rendben lemegy. A problémák a linkelésnél jönnek elő. Hogyan lehet az olyan problémákat kiküszöbölni mint pl:

./ex_task4.o:(.data+0x2): multiple definition of `__heap_start'
./ex_init4.o:(.data+0x2): first defined here

$ grep -R __heap_start
noscfg.h: * ::__heap_start and ::__heap_end must be provided and initialized
noscfg.h:extern void *__heap_start;
inc/pos_nano.h: * it is required to set the variables ::__heap_start and
Binary file Release/ex_init4.o matches
Release/PicoOS_task1.map: 0x000000000080006b __heap_start
Release/PicoOS_task1.map: 0x000000000080465b PROVIDE (__heap_start, .)
Binary file Release/ex_task4.o matches
Binary file Release/src/nano/n_mem.o matches
ex_init4.c:void *__heap_start = (void*) &membuf_g[0];
src/nano/n_mem.c: freeBlockList_g = (BLOCK_t)(void*)MEM_ALIGN((MEMPTR_t)(__heap_start));

??? :F

tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!

(#4092) Jester01 válasza buherton (#4091) üzenetére


Jester01
veterán

A grep kimenet alapján az ex_init4.c-ben van benne tehát a "jogos tulajdonos" ő. Ha a linker szerint az ex_task4.o-ban is benne van, az azt jelenti, hogy huncutság van, például az ex_task4.c-ben lehet egy #include "ex_init4.c". Mindenesetre valahogy belekerül abba a modulba is, azt kell kinyomozni, hogyan.

Jester

(#4093) Karma válasza buherton (#4091) üzenetére


Karma
félisten

Ezek nem a Pico]Os példakódjai? Nem lehet hogy két appot is próbálsz egybefordítani? (Ötlet az "ex" előtagból, lehetne az example rövidítése.)

“All nothings are not equal.”

(#4094) buherton válasza Jester01 (#4092) üzenetére


buherton
őstag

Ha a linker szerint az ex_task4.o-ban is benne van, az azt jelenti, hogy huncutság van, például az ex_task4.c-ben lehet egy #include "ex_init4.c".

Ezt nem tudom, hogy honnan tudtad, de tényleg így van. Az ex_task4.c-ben semmilyen __heap_start-os declarálás, definiálás vagy hasonló sincs. De ez miért jelent problémát?

MOD: Arra gondolsz, hogy a make környezet úgy fordítja, hogy minden c fájt fordít, és ennek az lesz a következménye, hogy az ex_task4.c-ből includálva van az ex_init4.c ezért gyakorlatilag az ex_init4.c kétszer van fordítva? És amikor a linkeléshez ér, akkor jön a felismerés, hogy két __heap_start van, mert bár az ex_task4.c nem tartalmazza, de az include miatt mégis bele kerül.

(#4093) Karma: Igen, több példa is van, viszont úgy van megcsinálva, hogy a közös dolgok 4 init fájlban vannak, és a különböző példák ezeket include-álják és így egy rakat fölös kódot nem kell ismételten leírni. Ilyen a main, a task inicializálás, deklarálások, stb..-k. Nem túl szép, de az biztos hogy hatékony, de egyelőre még nem fordul...

[ Szerkesztve ]

tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!

(#4095) Karma válasza buherton (#4094) üzenetére


Karma
félisten

Hát de az nem fasza, hogy lefordítja az ex_init4-et egyszer, aztán az ex_task4-et is (amiben benne van az include miatt az ex_init4 tartalma, és ezért van benne __heap_start...), és egymás mellé rakja őket. Elég egyértelműen rossz felépítés.

Rá kell venned az Eclipse-et, hogy csak az ex_task4-et fordítsa le, vagy vedd ki az include-ot és hagyd hogy a linker tegye a dolgát.

[ Szerkesztve ]

“All nothings are not equal.”

(#4096) buherton válasza Karma (#4095) üzenetére


buherton
őstag

Hát nem. Ez a példa lefordult, de másfélszer (igazából 10-szer annyit, csak faragtam rajta) annyi memóriát eszik mint amennyi van a mikrokontrollerben (1 kB van az MCU-ban), mert a nano részt is használja. Próbálkoztam az első példával, ami csak a pico-t használja, de úgy szó szerint egy rakás bug az egész. Olyan assembly parancsokat használ, ami nincs az AVR-nek, és ha azt javítom sem fordul le, mert két millió más baja van. :( Pedig nagyon ígéretesnek tűnt, mert x86-on is lehet használni.

[ Szerkesztve ]

tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!

(#4097) hoffman_


hoffman_
nagyúr

sziasztok,

miután leprogramozták nekem C#-ben, mert én hülye elnéztem a topicot, ide is eltaláltam... a kérdés adott, mutatom:

továbbra is szükségem lenne segítségre, a második, függvényekkel operáló zh-t nem tudom abszolválni, most megyek pótra kedden, de ezen is meg fognak vágni, ha így megy, és az nagy gáz lesz.

két program van, amit meg kéne írnom, tud valaki ebben segíteni? illetve több, csak jó lenne, ha ezt a kettőt látnám, hogy lássam, hogy néz ki. utána már talán meg tudom érteni egyedül is.

első:
bekérni s1 tömbbe 10 darab 4 jegyű számot, úgy, hogy az 1-es és 100-as helyiértéken lévő számok nem egyezhetnek(tehát 2345 jó, 2343 nem jó). ezután s2 tömbbe átmásolni azokat, ahol a számjegy 0. bitjén 0 van, az 1. biten pedig 1-es. ezután az utolsó 4 elem átlagát kell venni. mindegyik részt függvénnyel.

második:
10 darab char bekérése s1 tömbbe ascii kód alapján úgy, hogy a 10-es helyiértéken 3-mal osztható szám legyen, és később sztringként lehessen használni. ezután s2-be másolni a karaktereket, ahol a 0. és 1. biten is 1-es áll. ezután az első 5 elem összegét kell venni. mindegyik részt függvénnyel.

nagyon fontos lenne, hogy ezeket lássam, remélem valaki tud időben segíteni. előre is köszönök mindent :R

[ Szerkesztve ]

"The time you enjoy wasting is not wasted time."

(#4098) hoffman_ válasza hoffman_ (#4097) üzenetére


hoffman_
nagyúr

senki többet harmadszor? :( nagyon fontos lenne.

illetve még egy kérdés. írtam én is valamit egy feladatra, természetesen nem jó, és nem tudom, hogy miért. valaki meg tudja javítani esetleg?

feladat: bekérni s1 tömbbe 10 karaktert úgy, hogy ascii kód szerint a 1-es és 100-as helyiértéken csak 6 vagy 7 állhat. ezután s2-be másolni az elemeket(ha van), amelyeknél a 10-es helyiértéken lévő szám 0. bitje 0, az 1. bitje pedig 1, utána az első 4 elem minimumát kell megadni. mindent függvénnyel.

- min függvény ebben még nincs is benne, de így se ok

void beker(unsigned char *s1);
int masol(unsigned char *s1, unsigned char *s2);

int main()
{
unsigned char s1[10], s2[10];
beker(s1);
masol(s1, s2);
return 0;
}

void beker(unsigned char *s1)
{
int i=0;
unsigned int temp;
/*while(i<10)
{
scanf("%d", temp);
if((temp[i] &0x3 == 0x6) || (temp[i] &0x3 == 0x7)) s1[i]=temp;
i++;
}*/
while(i<10)
{
scanf("%d", temp);
if((temp &0x3 == 0x6) || (temp &0x3 == 0x7)) s1[i]=temp;
else s1[i]=0;
i++;
}
}

int masol(unsigned char *s1, unsigned char *s2)
{
int i=0, j=0;
while(i<10) s2[i++]=0;
i=0;
while(i<10)
{
if(s1[i] &0x5 == 0x1) s2[j++]=s1[i];
i++;
printf("%d, ", s2);
}
}

[ Szerkesztve ]

"The time you enjoy wasting is not wasted time."

(#4099) Jester01 válasza hoffman_ (#4098) üzenetére


Jester01
veterán

Van pár probléma:

10 karaktert kell olvasni, tehát scanf %d nem jó.
A helyiértékeket decimálisan kell érteni
temp & 3 sose lesz 3-nál több. A feladat szerint 0. bit 0 és 1. bit 1 tehát (x & 3) == 2 (de itt x ugye már a 10-es helyiérték)

[ Szerkesztve ]

Jester

(#4100) hoffman_ válasza Jester01 (#4099) üzenetére


hoffman_
nagyúr

mhm, köszönöm! :R

akkor a beolvasásra getc(stdin)-nel próbálok valamit. viszont a többire hiába írtad a hibát, nem tudom, hogy hogy lenne helyes a megoldás. ezt a maszkolás részt akkor nagyon nem értem ezek szerint.

[ Szerkesztve ]

"The time you enjoy wasting is not wasted time."

Copyright © 2000-2024 PROHARDVER Informatikai Kft.