Hirdetés

2024. május 1., szerda

Gyorskeresés

Hozzászólások

(#2951) Szabesz válasza dany27 (#2946) üzenetére


Szabesz
őstag

Pl az elsőt megcseréled az utolsóval, a másodikat az utolsó előttivel stb. (úgy, hogy a láncolt listasága ne sérüljön)
Értelem szerűen páros/páratlan elemszámnál kicsit másképp kell eljárni.

¯\_(ツ)_/¯

(#2952) Jester01 válasza dany27 (#2950) üzenetére


Jester01
veterán

Akkor hülyék. :P A segédlistát általában azért tiltják mert memóriaigénye van. Ha viszont az eredeti listát használod, akkor nincs plusz memóriaigény.

Jester

(#2953) Korcsii válasza Jester01 (#2952) üzenetére


Korcsii
őstag

Duplán láncolt lista?

(#2954) Jester01 válasza Korcsii (#2953) üzenetére


Jester01
veterán

Gondolom nem. Azt eleve meg sem kell fordítani, de ha mégis, azt is igen egyszerű.

Jester

(#2955) szkorhetz válasza Sk8erPeter (#2945) üzenetére


szkorhetz
őstag

Esküszöm, így csináltam.. :D :D

(#2956) Sk8erPeter válasza szkorhetz (#2955) üzenetére


Sk8erPeter
nagyúr

Ja értem, akkor ezek szerint az eredeti kódod is egy formázatlan hányadék? :D

Sk8erPeter

(#2957) szkorhetz válasza Sk8erPeter (#2956) üzenetére


szkorhetz
őstag

Én ezt nem tudom, két hónapja tanulom a c-t.. :D

(#2958) Feribacsi555


Feribacsi555
senior tag

Sziasztok!
A feladatom az hogy egy adott függvényt egy adott intervallumon belül kiszámoljon. Meglehet adni, hogy mekkora értékenként számoljon. Az a gondom, hogy néha ezt írja ki számok helyett:
-1.#IND0
Ez mit jelent?

(#2959) Jester01 válasza Feribacsi555 (#2958) üzenetére


Jester01
veterán

Google ( :U ) szerint:

Indeterminate.
Result cannot be represented in a floating point register.
Most likely the result of 0/0, sqrt(-1) or similar.

Magyarul nullával osztottál, negatív számból gyököt vontál vagy hasonló - valós számokon - érvénytelen művelettel próbálkoztál.

Jester

(#2960) Feribacsi555 válasza Jester01 (#2959) üzenetére


Feribacsi555
senior tag

Ahham, köszi, 0-val való osztásnál hibát vág ki, de a többinél nem :D :D

(#2961) Feribacsi555 válasza Feribacsi555 (#2960) üzenetére


Feribacsi555
senior tag

Amúgy nekem ezt írja a google:

A keresett kifejezés (-1.#IND0) egyetlen dokumentumban sem található meg.

(#2962) Jester01 válasza Feribacsi555 (#2961) üzenetére


Jester01
veterán

A mínusz jel speciális guglinak, idézőjelbe kell az egészet tenni.

Jester

(#2963) szkorhetz válasza szkorhetz (#2944) üzenetére


szkorhetz
őstag

Sziasztok!
Ebben a feladatban, futtatási időben történő adatbázishoz kellene törlés lehetőséget biztosítani adatokhoz. Hogyan lehetséges?
Köszönöm szépen :)

(#2964) LumberJack


LumberJack
csendes tag

Sziasztok! Nekiálltam írni egy programot, és szeretnék a konzolban színes képeket megjeleníteni karakterek segítségével. Nyilván elég limitált a képek minősége, de pont ilyen retro hangulatra törekszem. Az egyetlen gond azonban, hogy a megrajzolt képeket ANSI fileban menti a rajzprogram(PabloDraw). Ebből kéne nekem valahogy kibányászni a karakterek színeit, magukat a karaktereket stb, stb. Azt akarom kérdezni, hogy tudtok-e valami módszert, amivel a problémát viszonylag egyszerűen meg lehet oldani? Köszi előre is!

(#2965) LumberJack


LumberJack
csendes tag

Az előző problémát sikerült már megoldanom, de most csak sikerült valami nevetségesen egyszerű dolgon elcsúsznom. A problémám a következő: szeretnék egy függvényt csinálni, ami file-ból behúzza az adatokat, majd egy kétdimenziós tömbben eltárolja azokat. A file csak space-ekkel elválasztott egészeket tartalmaz, pontosan 1760 db-ot (80x22). A következőt sikerült összehoznom, de valamiért kifagy, és egyszerűen képtelen vagyok rájönni, hogy miért.

int main()
{
int tomb[22][81];
int v, y = 0, x = 0, p;
FILE *szoveg;
szamok = fopen("adat.dat", "rb");
for (p = 0; p < 1760; p++) {
fscanf(szamok, "%d", &v);
if (x == 80);
{
x = 0;
y++;
tomb[y][x] = v;
}
if (x < 80) {
tomb[y][x] = v;
x++;
}
}
y = 0;
x = 0;
for (p = 0; p < 1760; p++) {
if (x == 80) {
x = 0;
y++;
printf("%d", tomb[y][x]);
}
if (x < 80) {
printf("%d", tomb[y][x]);
x++;
}
}
return 0;
}

A második for ciklusnak csak ellenőrző szerepe van. Azzal iratom ki a tömb tartalmát.

[ Szerkesztve ]

(#2966) Jester01 válasza LumberJack (#2965) üzenetére


Jester01
veterán

Például azért, mert az első if blokk x == 80 esetén kinullázza az x-et, amitől persze teljesülni fog az x < 80 feltétel és a második blokk is végrehajtódik. Esetleg simán else ágat kellene használni (vagy átírni kevésbé kacifántos megoldásra).

Jester

(#2967) WonderCSabo válasza LumberJack (#2965) üzenetére


WonderCSabo
félisten

Ez sztem le se fordul, mert a szamok valtozó sehol sem volt deklarálva. Egyébként miért az ifekkel szórakozol, miért nem csinálod a beolvasást/kiírást beágyazott ciklussal?

(#2968) LumberJack válasza Jester01 (#2966) üzenetére


LumberJack
csendes tag

Köszi, megoldódott, az életben nem vettem volna észre.

(#2969) LumberJack válasza WonderCSabo (#2967) üzenetére


LumberJack
csendes tag

Nálam nem ezek vannak, csak elég hülye neveket szoktam adni a változóknak (mérgemben meg vállalhatatlanokat), gondoltam átírom tisztességesre, mielőtt feldobom ide, csak figyelmetlen voltam :)

(#2970) moha21


moha21
addikt

Sziasztok! Kb. ~5-6 éve programoztam utoljára C-ben, szóval eléggé hiányos már a tudásom.

ascii karaktereket szeretnék fáljba írni ( arra emlékszem, hogy lehet fájlba írni, de már arra nem, hogy hogyan is )

BorlandC a fejlesztőkörnyezet még jó régen írtam rá ezt a programot.:

#include <stdio.h>
#include <conio.h>
#include <dos.h>
main()
{
window(1,1,80,25);
textbackground(0);
clrscr();
int a=1;
for(;;a++)
{
clrscr();
printf("\ntizes sz mrendszerben: %i\ntizenhatos sz mrendszerben: %X\nA karakter: %c",a,a,a);
getch();
}
}

nem szép, de működik, szóval ezt kellene fájlba menteni. Nyilván meg tudnám egyedül is oldani, de hátha így gyorsabb lesz. :R

Nem az az igazi férfi aki minden nőt meghódít, hanem aki ismeri a nagyfeszültségű földkábelek szigetelésének technikáját.

(#2971) WonderCSabo válasza moha21 (#2970) üzenetére


WonderCSabo
félisten

fprintf fv a barátod.

(#2972) moha21 válasza WonderCSabo (#2971) üzenetére


moha21
addikt

Köszi! Argomentum az u.a. mint a sima print fv.?

Nem az az igazi férfi aki minden nőt meghódít, hanem aki ismeri a nagyfeszültségű földkábelek szigetelésének technikáját.

(#2973) WonderCSabo válasza moha21 (#2972) üzenetére


WonderCSabo
félisten

(#2974) moha21 válasza WonderCSabo (#2973) üzenetére


moha21
addikt

Köszi, működik! :) közben rájöttem a Borland C-ben majd az össze függvényre van példa is.
DE az fprint-re már nem is emlékeztem, anno suliban kellett csinálni alacsony magasszintű, de alig maradt meg belőle valami. :B

Nem az az igazi férfi aki minden nőt meghódít, hanem aki ismeri a nagyfeszültségű földkábelek szigetelésének technikáját.

(#2975) dany27


dany27
őstag

Sziasztok!

Írtam C-ben egy morse kód ellenőrző progit bináris fát használva de egy érdekes anomáliába futottam....
Ha beadom az a kódot neki hogy .-. akkor kidobja hogy ez az R betű kódja... de ha beírom neki azt hogy .-.- akkor azt mondja hogy G pedig ilyen morse küd nem is létezik....
Sőt mi több a G az pont a fa másik oldalán van.... Már a legelelején pont ellentétes irányba kellene elindulni hogy G-t kapjunk... elméletileg a .-.--nak null pointert kéne hogy adjon mivel a .-. az R betű és utánna nincs már semmi sem...

Hol csesztem el?
Ez a rész ellenőrzi hogy van e ilyen morse kód(megpróbálja a beadott kód szerint bejárni a fát):
void check(Fa *gyoker,char kod[7])
{
Fa *hely;
int i=0;
hely=gyoker;
while(kod[i]!='\0')
{
if(kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
i++;
}
if(hely!=NULL)
printf("\n%c",hely->betu);
else
printf("\nA megadott morse kod helytelen!");

}

A fa jól van feltöltve az elemekkel!

(#2976) Gyuri16 válasza dany27 (#2975) üzenetére


Gyuri16
senior tag

a jobb es bal ki van nullazva a levelekben? azon kivul a while ciklusban jo lenne ellenorizni, hogy a hely pointer nem null-e (ha egy hosszu kodot adsz neki meghal nullpointer dereferenciaval vagy segfaulttal)

Nem vagyok egoista, csak uborkagyalu!

(#2977) dany27 válasza Gyuri16 (#2976) üzenetére


dany27
őstag

Így töltöm fel:

void beilleszt(Fa* gyoker, char betu, char *kod)
{
Fa *hely, *elozo;
int i=0;
hely=gyoker;
while (kod[i]!='\0')
{
elozo=hely;
if (kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
if (hely==NULL)
{
hely=uj();
if (kod[i]=='.')
elozo->jobb=hely;
else
elozo->bal=hely;
}
i++;
}
hely->betu=betu;
}

(#2978) Gyuri16 válasza dany27 (#2977) üzenetére


Gyuri16
senior tag

ott ahol az uj helyet hozod letre nullazni kell a jobb es bal pointereket. nem tudom, hogy nez ki az uj() fuggvenyed, ott lehetne ezt csinalni.

Nem vagyok egoista, csak uborkagyalu!

(#2979) dany27 válasza Gyuri16 (#2978) üzenetére


dany27
őstag

uj fgv-ben kivan nullazva mind2, tehát a jobb és a bal is.
Amúgy így néz ki:
Fa* uj()
{
Fa* elem=(Fa*)malloc(sizeof(Fa));
elem->jobb=NULL;
elem->bal=NULL;
return elem;
}

(#2980) Jester01 válasza dany27 (#2979) üzenetére


Jester01
veterán

De mi a fenéért kell már megint a teljes kódot folytatásokban, külön könyörgésre elküldeni? :(((

Addig is amíg egyszercsak végre megkapjuk, használj egy debuggert.

Jester

(#2981) dany27 válasza Jester01 (#2980) üzenetére


dany27
őstag

Elnézést! :R Csak azt hidtem hogy valamit a check fgv-ben rontottam el, de aztán kiderült hogy nem és akkor már nem tudtam szerkeszteni a régebbi hozzászólásomat.

Raktam egy if-et oda ahol elhelyezi a betűt a fában,
azért hogy megbiznyosodjak róla hogy a fa jobb vagy bal oldalára rakja... De egy kicsit érdekes lett a végeredmény.
Nem mindegyik betűt tölti fel valamiért, mert sem a bal sem a jobb nem teljeseül....
Erre gondoltam debuggernak a kódba:
if (elozo->bal)
{
hely->betu=betu;
printf("\nBal: %c",betu);
}
else if(elozo->jobb)
{
hely->betu=betu;
printf("\nJobb: %c",betu);
}

E szerint minden elem jó helyre kerül szval a feltöltéssel elvileg nem lehet gond...

(#2982) Jester01 válasza dany27 (#2981) üzenetére


Jester01
veterán

De még mindig nem kaptunk teljes listát. Amit le tudunk fordítani és futtatni.

Jester

(#2983) dany27 válasza Jester01 (#2982) üzenetére


dany27
őstag

Íme:

#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#include<string.h>
#define ESC 27
#define ENTER 13
#define BS 8
typedef struct ag{
char betu;
struct ag *jobb,*bal;
} Fa;

Fa* uj()
{
Fa* elem=(Fa*)malloc(sizeof(Fa));
elem->bal=NULL;
elem->jobb=NULL;
return elem;
}
void insert(Fa* root, char betu, char *kod)
{
Fa *hely, *elozo;
int i=0;
hely=root;
while (kod[i]!='\0')
{
elozo=hely;
if (kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
if (hely==NULL)
{
hely=uj();
if (kod[i]=='.')
elozo->jobb=hely;
else
elozo->bal=hely;
}
i++;
}
hely->betu=betu;
}
void check(Fa *root,char kod[7])
{
Fa *hely;
int i=0;
hely=root;
while(kod[i]!='\0' && hely!=NULL)
{
if(kod[i]=='.')
hely=hely->jobb;
else
hely=hely->bal;
i++;
}
if(hely!=NULL)
printf("\n%c",hely->betu);
else
printf("\nA megadott morse kod helytelen!");

}
void fill(Fa* root)
{
insert(root, 'A', ".-");
insert(root, 'B', "-...");
insert(root, 'C', "-.-.");
insert(root, 'D', "-..");
insert(root, 'E', ".");
insert(root, 'F', "..-.");
insert(root, 'G', "--.");
insert(root, 'H', "....");
insert(root, 'I', "..");
insert(root, 'J', ".---");
insert(root, 'K', "-.-");
insert(root, 'L', ".-..");
insert(root, 'M', "--");
insert(root, 'N', "-.");
insert(root, 'O', "---");
insert(root, 'P', ".--.");
insert(root, 'Q', "--.-");
insert(root, 'R', ".-.");
insert(root, 'S', "...");
insert(root, 'T', "-");
insert(root, 'U', "..-");
insert(root, 'V', "...-");
insert(root, 'W', ".--");
insert(root, 'X', "-..-");
insert(root, 'Y', "-.--");
insert(root, 'Z', "--..");
insert(root, '0', "-----");
insert(root, '1', ".----");
insert(root, '2', "..---");
insert(root, '3', "...--");
insert(root, '4', "....-");
insert(root, '5', ".....");
insert(root, '6', "-....");
insert(root, '7', "--...");
insert(root, '8', "---..");
insert(root, '9', "----.");
insert(root, '.', ".-.-.-");
insert(root, ',', "--..--");
insert(root, ':', "---...");
insert(root, '?', "..--..");
insert(root, '-', "-....-");
insert(root, '/', "-..-.");
insert(root, '(', "-.--.-");
insert(root, '@', ".--.-.");
insert(root, '=', "-...-");
}

void clreol()
{
int i;
printf("\r");
for(i=1;i<80;i++)
{
printf(" ");
}
printf("\r");
}

void felszabadit(Fa *root)
{
if (root==NULL)
return;

felszabadit(root->jobb);
felszabadit(root->bal);
free(root);
}

int main()
{
Fa* root=uj();
char beolv[7];
int index=0;
int key=0;
fill(root);
printf("Morse kod ellenorzo! Adatbevitel megszakitalsa az ESC lenyomasaval!\n");
printf("Morse kod: ");
do
{
key=getch();

if(((key>=45) && (key<=46)) && (index<6))
{
beolv[index]=(char)key;
index++;
printf("%c",(char)key);
}
else if(key==BS && strlen(beolv)>0)
{
beolv[index-1]=(char)0;
index--;
clreol();
printf("Morse kod: %s",beolv);
}
}while((key!=ESC) && (key!=ENTER || index==0));
beolv[index]='\0';
if(key==ENTER)
check(root,beolv);
else
printf("Adatbevitel megszakitva");
felszabadit(root);
return 0;
}

Ezzel próbáljátok ki:
.-. Ez elvileg R betűt ad ami helyes.
.-.- Ez G-t ad ami nem helyes mivel a G morse kódja --. és ha ezt beírom erre is G-t ad!

[ Módosította: #65675776 ]

(#2984) Gyuri16 válasza dany27 (#2983) üzenetére


Gyuri16
senior tag

tanulj meg debuggert hasznalni. ket printf az nem debuggolas.

mi tortenik ha .-.- a bemenet? nem NULL lesz az eredmeny, mert a fadban van ilyen ag a "." karakter miatt aminek a kodja ".-.-.-" tehat a vegen egy olyan betut fogsz kapni ami abban a structban volt. mivel olyan morze kod nincs, ezert valami veletlent kapsz. innen mar gondolom egyertelmu..

Nem vagyok egoista, csak uborkagyalu!

(#2985) dany27 válasza Gyuri16 (#2984) üzenetére


dany27
őstag

Okés! köszi szépen! Már teljesen világos!

(#2986) Darkzbane


Darkzbane
tag

Olyan kérdésem lenne hogy adott C programozási feladat elkészítését (pénzért természetesen) vállalná e valaki?

(#2987) vanek


vanek
tag

Van egy programom..amely sztringet keres egy adott sztringben..

a problémám, hogy mikor beadom a programot a netes program tesztelőbe, akkor 5 pontra azt írja ki, hogy hibás eredmény..gondolom 5 példa hibás..de sajnos nem tudok rájönni, hogy milyen fajta példák lehetnek azok..

a programom..

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


int vizsgal(char s1[], char d1[])
{
int i,j;

for(i=0; i<strlen(s1); i++)
{
if (s1[i]==d1[0])
{
for(j=1;j<strlen(d1);j++)
{
if ((s1[i+j]!=d1[j]) || ((i+j)>strlen(s1)-1)) break;
if (j==strlen(d1)-1) return i;
}
if (strlen(d1)==1) return i;
}
}
return -1;
}

int main()
{
FILE *f,*fk;
char s[256],d[256],e[261];
char ch;
int i,j,kimenet=0;

fk=fopen("ki.txt", "wt");
f=fopen("be.txt", "rt");
if(f==NULL)
{
exit(-1);
}

fgets(s,256,f);
fgets(d,256,f);

kimenet=vizsgal(s,d);
printf("%i",kimenet);

if (kimenet!=-1)
{
strcpy(e,"IGEN ");
for (i=0;i<kimenet;i++)
{
e[i+5]=s[i];
}
e[kimenet+5]='\n';
for (j=0;j<=kimenet+5;j++)
{
fputc(e[j],fk);
}
}else {
strcpy(e,"NEM");
for (j=0;j<3;j++)
{
fputc(e[j],fk);
}
e[3]='\n';
fputc(e[3],fk);
}

fclose(f);
fclose(fk);
return 0;
}

köszi előre is

(#2988) WonderCSabo válasza vanek (#2987) üzenetére


WonderCSabo
félisten

Válaszoltam a C++ topikban, de itt folytassuk.

(#2989) vanek válasza WonderCSabo (#2988) üzenetére


vanek
tag

igen tudom.. és nagyon szépen köszönöm! de amint írtam, nekem nem a programommal van a gond..hanem az eshetőségekkel..

[ Szerkesztve ]

(#2990) WonderCSabo válasza vanek (#2989) üzenetére


WonderCSabo
félisten

Kijavítottam a programodat, most elvileg mindenre működnie kell... Találtál olyan esetet, amire így sem működik?

(#2991) vanek válasza WonderCSabo (#2990) üzenetére


vanek
tag

ha arra a javításra gondolsz, amit a c++ topikban írtál..akkor nem működik jól, mivel már az első próbálkozásnál találtam egy hibát..

a forrás sztring az ALMa volt a cél sztring az ALMA

és azt írta, hogy igen benne van és kiírta az ALMa-t..

(#2992) WonderCSabo válasza vanek (#2991) üzenetére


WonderCSabo
félisten

Nem figyelted meg eléggé a javítást. Ha nincs benne, akkor a string hosszát adja vissza, ennek oka van, ha érdekel leírom.
Tehát a mainben ezt kell vizsgálnod: if (kimenet!=strlen(s)) IGEN else NEM.

[ Szerkesztve ]

(#2993) vanek válasza WonderCSabo (#2992) üzenetére


vanek
tag

persze, hogy érdekel, így tanul az ember!

(#2994) WonderCSabo válasza vanek (#2993) üzenetére


WonderCSabo
félisten

Amennyire én tudom, ilyenkor az aktuális pozíciót adja vissza, ilyenkor a for ciklusban már pont az utolsó karakter+1 indexig ment. Tehát igazából a végén is elég i-t visszaadni, nem kell meghívni az strlen fv-t.

[ Szerkesztve ]

(#2995) vanek válasza WonderCSabo (#2992) üzenetére


vanek
tag

feltöltöttem a progit kijavítva..ugyan úgy 5 hibás eredmény volt..és ugyan ott voltak a hibás eredmények..:\

(#2996) WonderCSabo válasza vanek (#2995) üzenetére


WonderCSabo
félisten

De milyen bemenettel?

(#2997) vanek válasza WonderCSabo (#2996) üzenetére


vanek
tag

bemenet nincs..

a kész progit feltöltöm egy oldalra, ahol egy tesztelő program 10 tesztet futtat le..

az eredményeknél, csak annyit látok, hogy pl.: 5 teszt, futási idő 004 sec, hibás eredmény..

de sajnos semmi ötletem sincs, hogy mi lehet az..

[ Szerkesztve ]

(#2998) WonderCSabo válasza vanek (#2997) üzenetére


WonderCSabo
félisten

De van bemenet, csak Neked nem mondja meg mi volt az, sajnos. Egyébként mi a pontos specifikáció? Mert ha mondjuk ha nincs benne és -1-et vár, akkor nyilván rossz. Egyébként sztem jó a program.

(#2999) vanek válasza WonderCSabo (#2998) üzenetére


vanek
tag

[link]

itt a példa

igen bemenet van :D csak én nem tudom..

azért gondolom, hogy valami szélsőséges megoldás..

egyébként nem futtattam a programot minden eshetőségre ami eszembe jutott..mindenre jó volt..:\

(#3000) vanek válasza vanek (#2999) üzenetére


vanek
tag

NEM = LEfuttattam csak mást akartam írni, mint amit gondoltam..:D

Copyright © 2000-2024 PROHARDVER Informatikai Kft.