2013. május 22., szerda

Hozzászólások

(#751) Fire/SOUL/CD válasza cellpeti (#750) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Amúgy megírtam, azt a bináris kódot, ha érdekel berakhatom ide, vagy privátba.
(bár még mindig nem kommenteztem fel :DDD )
De talán programozástechnikailag találsz bent alkalmazható megoldásokat, elveket és segíthet legközelebb egy másik feladat megoldásában... :K

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#752) cellpeti


cellpeti
(PH! kedvence)

Ez mi?????


KÉP

Vizsgafeladatom:

Van egy verseny,max 50en vehetnek részt!
Be kell kérni X versenyzőt,azok neveit és a dobásuk nagyságát!
A névbe kisbetű,nagybetű és space szerepelhet.

Ki kell írni ki dobta a legnagyobbat és ha 2 ember ugyanannyit dobott egymás után,akkor az első lesz a helyes!

NEM TUDTAM MEGÍRNI! :W :O

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#753) doc válasza cellpeti (#752) üzenetére


doc
(MODERÁTOR)
LOGOUT blog

ez nem programozas, hanem vindoooz: "Permission denied"

Aláírás (nem kötelező megadni - minden hozzászólásnál automatikusan az üzenet végéhez íródik)

(#754) cellpeti válasza doc (#753) üzenetére


cellpeti
(PH! kedvence)

engedély tagadás,de vajon miért?

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#755) cellpeti


cellpeti
(PH! kedvence)

Na megy a dolog!

Itt a kód,de nem hiszem,hogy jó! Vagy nem is jól álltam neki???

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

#define MAX 50

int getline(char s[],int lim)
{
int c,i;
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);
}

int egesze(char s[]){
int i=0, kezd;
while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')++i;
if(s[i]=='+' || s[i]=='-')++i;
kezd=i;
while(s[i]>='0' && s[i]<='9')++i;
if(i==kezd || s[i]!=' ' && s[i]!='\t' && s[i]!='\n' && s [i]!=0) return 0;
else return 1;}

void main(void){
char nev[MAX+1];
char szam[MAX+1];
float tav;
int d,i,c;

printf("Kerem a nevezok szamat: ");
for(i=0;i<szam;i++){
getline(szam,MAX);
if (!egesze(szam)) printf("Akkor nem szamot adott meg!\n");
else printf("Helyes megadás!\n");
nevez=atoi(szam); }

do{

printf("Kerem a %d. versenyző nevét!\n",nevez);
getline(nev,MAX);
for(i=0;i<nev;i++)
if(islower(szam[0])) printf("Nem kezdodhet kisbetüvel!\n");
if(islower(szam)) printf("Csak kisbetű lehet a névbe!\n");
if(isupper(szam[0])) printf("Jó! Csak nagybetűvel kezdődhet!\n");
if(isalpha(szam)) printf("Nem lehet benne szam!\n");



}while





}

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#756) nukewar


nukewar
(kvázi-tag)

Azt tapasztaltam a frissen telepített vista home premium rendszernél, hogy ha c-ben tömböt használok, akkor a lefordított program nem hajlandó elindulni. Appcrash.
A forrásban nincs hiba, sem warning. Ahogy kikommentezem a tömböt használó sorokat a program működik. A fordítás probléma mentes. (eclipse, mingw, msys).
Más is tapasztalt hasonlót?

(#757) kiskatus


kiskatus
(újonc)

Kedves Fire!
Elvittem az általad megírt programot és nem fogadta el, mert az fseek pozicionálást és az ftell-t még nem tanultuk. Azt mondta, hogy rewind-el kell megoldani. Tudnál segíteni benne?

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

int main()
{
unsigned long ErrorCounter;
unsigned char chFirst, chSecond;
FILE * Szoveg1;
FILE * Szoveg2;
FILE * Kimenet;

printf("Binaris osszehasonlitas\n\n");

if (!(Szoveg1 = fopen("first.txt","rb"))) {
fprintf(stderr,"Nem lehet megnyitni a 'first.txt' fajlt...\n");
getchar();
exit(-1);
}

if (!(Szoveg2 = fopen("second.txt","rb"))) {
fprintf(stderr,"Nem lehet megnyitni a 'second.txt' fajlt...\n");
fclose(Szoveg1);
getchar();
exit(-1);
}
fseek(Szoveg1,0,SEEK_END);
fseek(Szoveg2,0,SEEK_END);
if (ftell(Szoveg1)!=ftell(Szoveg2)) {
printf("A két fájl mérete nem azonos...\n");
fclose(Szoveg1);
fclose(Szoveg2);
getchar();
exit(-1);
}
if (!ftell(Szoveg1)) {
printf("A fajlok merete nem lehet 0 byte...");
fclose(Szoveg1);
fclose(Szoveg2);
getchar();
exit(-1);
}
fseek(Szoveg1,0,SEEK_SET);
fseek(Szoveg2,0,SEEK_SET);
if (!(Kimenet = fopen("error.txt","wt"))) {
fprintf(stderr,"Nem lehet megnyitni az 'error.txt' fajlt...\n");
fclose(Szoveg1);
fclose(Szoveg2);
getchar();
exit(-1);
}
ErrorCounter=0;
while (fread(&chFirst,1,1,Szoveg1)==1) {
fread(&chSecond,1,1,Szoveg2);
if (chFirst!=chSecond) {
fprintf(Kimenet,"File-pozicio: %#.8lx %#.2x <> %#.2x\n",ftell(Szoveg1),chFirst,chSecond);
ErrorCounter++;
}
}
if (ErrorCounter) printf("%lu elteres talalhato a ket fajl kozt.\nNezze meg az 'error.txt' fajl tartalmat...\n",ErrorCounter);
else printf("A ket fajl azonos...\n");

fclose(Szoveg1);
fclose(Szoveg2);
fclose(Kimenet);

system("pause");

return 0;
}

(#758) Fire/SOUL/CD válasza kiskatus (#757) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Egy keresztkérdés: a dinamikus memóriafoglalást tanultátok? (MALLOC például)

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#759) cellpeti


cellpeti
(PH! kedvence)

Sziasztok!

Keresek olyan embert aki nagyon vágja a C prog nyelvet!
Olyan embert keresek,aki Győrbe vagy Győr közelében lakik és hétközbe tudna segíteni nekem! :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#760) kiskatus


kiskatus
(újonc)

Hali!
Még nem tanultunk dinamikus memóriafoglalást.

[ Szerkesztve ]

(#761) Fire/SOUL/CD válasza kiskatus (#757) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Először is szívesen segítek Neked, a most következő rész az csak úgy kikívánkozott belőlem, NEM NEKED SZÓL!
"Elvittem az általad megírt programot és nem fogadta el, mert az fseek pozicionálást és az ftell-t még nem tanultuk."
Amikor ezt elolvastam, két idézet suhant át az agyamon, az első Hofi Géza kabaréból, míg a másik egy PH tag aláírásából származik(bár ezt nem szó szerint idézem)
"Szűz Mária idesanyám, aki a mennyekben lakozol titokban..." illetve
"nem az a baj, hogy nagy az Isten állatkertje, hanem az, hogy alacsony a kerítés"
Az aki ezt a feladatot feladta(alapszintű fájlkezelés kategória) és nem tanítja meg az alapszintű fájlkezelést Nektek(fseek, ftell stb), annak jobb lenne ha visszamászna a kerítésen belülre. :DDD
Ugyanis oly módon kellett megírni a programot(fseek, ftell nélkül), hogy nyugodtan rá lehetne ragasztani azt a címkét, hogy "A világ leglassabbra optimalizált fájl-összehasonlító alkalmazása avagy hogy ne írjunk C-ben ilyen programot" :W

Na mindegy...imhol a kód...

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

int main()
{
unsigned long ErrorCounter,FSize1,FSize2;
unsigned char chFirst, chSecond;
FILE * Szoveg1;
FILE * Szoveg2;
FILE * Kimenet;

printf("Binaris osszehasonlitas\n\n");

if (!(Szoveg1 = fopen("first.txt","rb"))) {
fprintf(stderr,"Nem lehet megnyitni a 'first.txt' fajlt...\n");
getchar();
exit(-1);
}

if (!(Szoveg2 = fopen("second.txt","rb"))) {
fprintf(stderr,"Nem lehet megnyitni a 'second.txt' fajlt...\n");
fclose(Szoveg1);
getchar();
exit(-1);
}
//itt változik némileg a kód, csak úgy lehet meghatározni a fájlok hosszát
//ha végig olvasom
FSize1=0;
while (fread(&chFirst,1,1,Szoveg1)==1) FSize1++;
FSize2=0;
while (fread(&chFirst,1,1,Szoveg2)==1) FSize2++;

if (!FSize1 || !FSize2) {
printf("A fajlok merete nem lehet 0 byte...");
fclose(Szoveg1);
fclose(Szoveg2);
getchar();
exit(-1);
}
if (FSize1!=FSize2) {
printf("A ket fajl merete nem azonos...\n");
fclose(Szoveg1);
fclose(Szoveg2);
getchar();
exit(-1);
}

rewind(Szoveg1);
rewind(Szoveg2);
//innentől változatlan
if (!(Kimenet = fopen("error.txt","wt"))) {
fprintf(stderr,"Nem lehet megnyitni az 'error.txt' fajlt...\n");
fclose(Szoveg1);
fclose(Szoveg2);
getchar();
exit(-1);
}
ErrorCounter=0;
while (fread(&chFirst,1,1,Szoveg1)==1) {
fread(&chSecond,1,1,Szoveg2);
if (chFirst!=chSecond) {
fprintf(Kimenet,"File-pozicio: %#.8lx %#.2x <> %#.2x\n",ftell(Szoveg1),chFirst,chSecond);
ErrorCounter++;
}
}
if (ErrorCounter) printf("%lu elteres talalhato a ket fajl kozt.\nNezze meg az 'error.txt' fajl tartalmat...\n",ErrorCounter);
else printf("A ket fajl azonos...\n");

fclose(Szoveg1);
fclose(Szoveg2);
fclose(Kimenet);

system("pause");

return 0;
}

Fire.

UI: ha legközelebb is kódot illesztesz be a HSZ-be, akkor légyszíves használd az erre a célra "kifejlesztett" :DDD KÓD feliratú gombot.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#762) Jester01 válasza Fire/SOUL/CD (#761) üzenetére


Jester01
(PH! addikt)

Jelen esetben persze tök fölösleges kétszer végigolvasni a fájlokat, hiszen az előzetes hossz ellenőrzésnek csak annyi értelme lenne, hogy akkor nem kell végigolvasni őket. Szépen el kell kezdeni összehasonlítani, aztán ha a hossz nem stimmel, az úgyis kiderül.

A "nem fogadta el" résszel nekem nem a "nem tanította" résszel van bajom, hanem hogy miért nem örül inkább hogy a diák többet tud?

Jester

(#763) cellpeti válasza Jester01 (#762) üzenetére


cellpeti
(PH! kedvence)

Ez sajnos nálunk is így van!
pl nem használhatsz scanf-et csak printf-et,mert az nem vettük még...
Egy csávóval meg nekiálltak kiabálni,hogy nem is ő írta a progit,asszem pendrive-on vitte be és azt adta be...

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#764) Jester01 válasza cellpeti (#763) üzenetére


Jester01
(PH! addikt)

Jó, hát a más által megírt program az ugye nem szép dolog.
Ha Fire/SOUL/CD is tanári babérokra hajt, akkor neki is inkább irányítania/segítenie kellene, nem kész programot prezentálni. SZVSZ.

Jester

(#765) cellpeti válasza Jester01 (#764) üzenetére


cellpeti
(PH! kedvence)

Segít ő!
Megírja a progit és akit érdekel,ugyis végignézi,mit miért és hogyan csinált benne,és elkezd rajta gondolkozni. Vagy párszor átnézi,megnézi benne az ötleteket és a folyamatok,majd nyit egy C környezetet és megpróbálja újra megírni!
Sztem elég jó tanulási forma ez is! :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#766) Fire/SOUL/CD válasza Jester01 (#764) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

A Fire/SOUL/CD az kb 1992-ben rendszerprogramozó matematika szakon végzett.
400 pontból 398-al, de csak azért, mert valamit nem tudott elolvasni a szaki, még ha a végeredmény stimmelt is. Ezenkívűl a választott diploma munkám címe ez volt:
"Lineáris permutációk a káoszban avagy rendezettség a rendezettlen halmazban"

Ebből adódóan, nem hajtok semmilyen babérokra(nincs mire).
Sok esetben csak a kezdő "lökést" kell megadni pár emberkének, még ha ez azzal is jár, hogy megírod helyette a progit....

Annyi gondom volt a progival, hogy így nem szabad megírni egy ilyen(file-compare) programot.
(csak sajnos a tanárbá feltételei miatt, csak így lehetett)

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#767) Fire/SOUL/CD válasza cellpeti (#765) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Köszönöm a hozzászólást! :R
Itt a kód, ami (miután tisztáztuk, hogy mit is kell írni) 10 perc alatt készült...

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>

#define MAXBINARIES 16
#define MAXBITS 16
#define NUMBERINDEX 0
#define BITCOUNTINDEX 1

char BinaryDigits[MAXBITS+1];
int BinariesCount=0;
unsigned int Numbers[MAXBITS][2];

unsigned int btou(int bitnumber, char s[]) {

int i;
unsigned int number=0;

for (i=bitnumber-1;i>=0;i--) {
if (BinaryDigits[i]) number+=pow(2,bitnumber-i-1);
}
return number;
}

int bin(int bitnumber, char s[]) {

int i;

for (i=0;i<bitnumber;i++) {
if (BinaryDigits[i]!=0 && BinaryDigits[i]!=1) {
printf("Nem binaris szam, probalja ujra...\n");
return 0;
}
}
Numbers[BinariesCount][BITCOUNTINDEX]=bitnumber;
Numbers[BinariesCount++][NUMBERINDEX]=btou(bitnumber,BinaryDigits);
return 1;
}

void InputBinaries() {

int i,j,ch;
printf("Kerem a szamokat binaris formaban (max. 16 darab, max. 16 bites szamot)\n\n");
for (i=0;i<MAXBINARIES;i++) {
do {
printf("%02d. szam: ",i+1);
j=0;
do {
ch = getchar();
BinaryDigits[j++] = ch-'0';
}
while( ch!='\n' && ch!=EOF && j <= MAXBITS);
fflush(stdin);
if (j==1) return;
}
while (!(bin(j-1,BinaryDigits)));
}
return;
}

void bintoscreen(int binariesndx) {

int i;
unsigned int a;

a=Numbers[binariesndx][NUMBERINDEX];
i=MAXBITS-Numbers[binariesndx][BITCOUNTINDEX];
for (;i>0;i--) printf("0");
for (i=Numbers[binariesndx][BITCOUNTINDEX]-1;i>=0;i--) {
printf((a & (unsigned int)pow(2,i)) ? "1":"0");
}
}

void bintoscreenXOR(int binariesndx) {

int i,j,highbitcount;
unsigned int a,b,c;

highbitcount=0;
a=Numbers[binariesndx][NUMBERINDEX];
b=Numbers[binariesndx+1][NUMBERINDEX];
c=a^b;
if (Numbers[binariesndx][BITCOUNTINDEX]>Numbers[binariesndx+1][BITCOUNTINDEX])
i=MAXBITS-Numbers[binariesndx][BITCOUNTINDEX];
else i=MAXBITS-Numbers[binariesndx+1][BITCOUNTINDEX];
j=i;
for (;i>0;i--) printf("0");
for (i=MAXBITS-j-1;i>=0;i--) {
if (c & (unsigned int)pow(2,i)) {
printf("1");
highbitcount++;
}
else printf("0");
}
printf("\t%9u\t",a^b);
printf((highbitcount % 2) ? "Paratlan" : "Paros");
}

int main() {

int i;

printf("Peldaprogram by Fire/SOUL/CD [Code::Blocks 8.02]\n\n");
InputBinaries();
if (BinariesCount) {
printf("\nSorszam\tBinaris\t\t\tDecimalis\n\n");
for (i=0;i<BinariesCount;i++) {
printf("%02u.\t",i+1);
bintoscreen(i);
printf("\t%9u\n",Numbers[i][NUMBERINDEX]);
}
if (BinariesCount>1) {
printf("\nSorszam\tBinaris\t\t\tDecimalis\tMagas bitek\n\n");
for (i=0;i<BinariesCount-1;i++) {
printf("%02u.\t",i+1);
bintoscreen(i);
printf("\t%9u\n",Numbers[i][NUMBERINDEX]);

printf("%02u.\t",i+2);
bintoscreen(i+1);
printf("\t%9u\n",Numbers[i+1][NUMBERINDEX]);

printf("XOR\t");
bintoscreenXOR(i);
printf("\n\n");
}
}
}
else printf("\nNem adott meg egyetlen binaris szamot sem...\n\n");

printf("\nA kilepeshez usson le egy billentyut...");
getch();

return 0;
}

Fire.

UI: szerintem is többet ér megírni egy progit, mintha nem válaszolna rá esetleg senki

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#768) cellpeti válasza Fire/SOUL/CD (#767) üzenetére


cellpeti
(PH! kedvence)

Fire.

UI: szerintem is többet ér megírni egy progit, mintha nem válaszolna rá esetleg senki

Ez így van! :C

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#769) kiskatus


kiskatus
(újonc)

Hali!
Én is úgy gondolom, hogy nagy segítség az is, hogy megírja a kért programot, hiszen nagyon sokat meg lehet belőle tanulni. És kérésemre leírta azt is, hogy mi miért van. (Csak meg kellett kérni).
Szóval Fire nagyon segítőkész és ez nagy ritkaság manapság!
Mégegyszer köszönöm Neki a segítséget!

(#770) cellpeti válasza Jester01 (#764) üzenetére


cellpeti
(PH! kedvence)

Hogy is mondják?? Bumm....szívtáááá :U

ui.: nem bunkóságból mondom!

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#771) Lortech válasza Fire/SOUL/CD (#767) üzenetére


Lortech
(PH! addikt)

Mégis mi mást váhatnál azoktól, akiknek segítesz megírni programokat helyettük - hogy később mondjuk egy az egyben bevigyék a te megoldásodat, miközben ők nem érték el azt a szintet, hogy megírjanak maguktól ilyet -, minthogy lelkendezzenek, hogy milyen jó arc vagy te és milyen jó, amit csinálsz.
Engem nem zavar, azt csinálsz, amit akarsz, de hogy helyesen teszed-e, hogy kérdés nélkül full megoldásokat prezentálsz, azt erősen kétlem. A szakmai témától kb. oda jutott a topik, hogy jönnek a nullhsz-es tagok feladatleírással, te meg beírod nekik a megoldást. Ettől még a büdös életben nem fog tudni magától egy programot megírni véleményem szerint, de te lehet, hogy hozzásegíted ahhoz, hogy egy tárgyon átvergődjön valahogyan, amiről lövése nem sok, de majd verheti a mellét az info diplomájára.

szerintem is többet ér megírni egy progit, mintha nem válaszolna rá esetleg senki
Ezzel kb. egyet tudok érteni, viszont nem hiszem, hogy ez volna a normális út. Eleve a kérdezőt eléggé pofátlannak tartom, aki bedob egy feladatleírást, hozzá se tud kezdeni, nincs kérdése, csak valami megoldást vár. A cél nem az kéne legyen, hogy a te megoldásoddal átjuttatod őket, hanem hogy eljussanak olyan szintre, amivel meg tudnak felelni a tárgyi követelményeknek, maguktól is képesek megírni, amit kell. Ehhez pedig részükről sok kitartás, szorgalom és tanulás kell, és el kell jutniuk legalább arra a szintre, hogy kérdezni tudjanak. De mint mondtam, azt csinálsz, amit jónak látsz, ez az én véleményem.

(#772) Jester01 válasza Lortech (#771) üzenetére


Jester01
(PH! addikt)

Meg az enyém is :R

Jester

(#773) Fire/SOUL/CD válasza Lortech (#771) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

1. Nézd, én szeretek segíteni másoknak, többek közt azért is, mert annak idején nekem nem segített senki, pedig sokszor rengeteg időt spórolhattam volna vele.
(Egy (akkoriban) 300 lelket számláló településről származom, ahol nem hemzsegtek az informatikusok, meg a programozók, meg évekig az egyetlen "számítógép" az egy C64-es volt az egész faluban :DDD )
Azzal sem foglalkozom, hogy valaki jó arcnak tart vagy sem, nem várok el senkitől elismerést, nincs feltűnési viszketettségem...

2. Abban teljesen egyetértek Veled, hogy az nem jó megoldás, ha egy feltett kérdésre, forráskóddal válaszol az ember. Az, hogy most több forráskódot látsz tőlem, az csak "véletlen". (bár véletlenek nincsenek :DDD )
A HSZ-oknak is van előzményük, nézzük CellPeti-t. Ha visszaolvasol, akkor látnod kell, hogy Ő a tudásához mérten megpróbálkozott elkészíteni a progit, kérdezett, javította amit kértem tőle, azaz kitartó és türelmes volt.(Ez számomra is fontos, akárcsak számodra). De eljutott egy olyan pontra, ahol kell az a kis "lökés". Biztos vagyok benne, hogy a forráskódnak köszönhetően, sokat tanult, látja hogy jó irányba halad, jól áll neki egy feladat megoldásához stb, és belátja, hogy a kitartásnak, türelemnek lesz eredménye.

KisKatus esete teljesen más: [Előzmény]
Bárki, aki elolvassa ezt HSZ-t, két dolgot tehet, vagy segít vagy nem. A kérés egyértelmű.
Megnéztem, KisKatus nem tartozik abba a kategóriába, aki minden héten azt kéri, hogy valaki írja meg helyette a progikat.
Én nem szoktam senkit bírálni. Mondhattam(vagy gondolhattam) volna, hogy "biztos egy lusta dög, egész évben nem tanult semmi, buktassák csak meg...stb".
Csak ehhez nincs jogom, nem beszélve arról, hogy mekkorát tévedhet az ember.
A legtöbbet a felkommentezett forráskóddal tudtam segíteni neki.

3. lehet, hogy hihetetlen, de én sem segítek mindenkinek. Priv-be több emberkének is segítek Pascal, C ill. Assembly-ben. Volt pár arc, akinek sürgősen kellet a segítség, de írtam hogy válaszoljon, módosítson ezt-azt. Nem válaszolt. Majd egyszer váratlanul megint feltűnt, hogy megint gyorsan kellene kód.
Na, akkor szépen megírtam neki, hogy keressen más emberkét kódot írni, engem meg felejtsen el.

4.Én is tisztában vagyok vele, hogy pl Informatikus-képzés, hát nem épp a legjobb...
Persze vannak nagyon jó sulik is.
Régebben láttam olyan hirdetést, amiben Informatikust kerestek, a végére meg oda volt írva nagy kiemelt betűkkel, hogy az xxxxxxxxx intézményben végzettek kíméljenek!

Fire.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#774) rothkrisz


rothkrisz
(újonc)

Sziasztok!

egy kis segítséget szeretnék kérni. Olyan programot kell írnom ami egy mondatban kicserél bizonyos szavakat *-ra.

de sajnos nem jövök rá a megoldásra. Sztringkezelő műveletek használata tilos.

tud valaki segíteni kicsit?

köszi

(#775) cellpeti válasza rothkrisz (#774) üzenetére


cellpeti
(PH! kedvence)

Szia!

Melyek azok a bizonyos szavak?

Fire:

te milyen C környezetet használsz?A C Free 4.1 az iskolájáért se akar lejönni,és kéne egy programkörnyezet!

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#776) cellpeti válasza cellpeti (#775) üzenetére


cellpeti
(PH! kedvence)

rothkrisz

a szavakat te adod meg,ugye és azokat kell csillaggal kiváltani,ugye? Az előbb félreértelmeztem a feladatot! Sorry

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#777) Fire/SOUL/CD válasza cellpeti (#775) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Ezt: [link]
De csak az ilyen Console alkalmazásokhoz.

Fire.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#778) cellpeti válasza Fire/SOUL/CD (#777) üzenetére


cellpeti
(PH! kedvence)

Na hello!

Nekem erre a feladatra lenne egy elméletem,már a megvalósításnál járok,csak nem vagyok olyan gyors,mint te! :O

Az elméletem,hogy:

Bekérek egy mondatot,majd az adott szót csillaggal helyetesítjük.
Mivel az adott szótt a felhasználó adja meg,akkor ez lehet 3 karakter,de lehet akár 18 karakter hosszú szó is,ezért le kell számoltatni,hogy az adott szó,adott tömb,hány elemű,majd ezt egyenlővé tenni 1 csillaggal. Ha jól gondolom. Vagy nem jó a gondolkodásom? :U

[ Szerkesztve ]

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#779) Fire/SOUL/CD válasza cellpeti (#778) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Ezt az eljárást gyakran használják fórumokon, ahol ha oda nem illő szavakat helyettesítik.
Itt a példa, hogy mit is kellene megvalósítani RothKrisz-nek.

" aa aaa bb cc aa, aa-gg aaaa cccc aa, aa, baa."
ebben cserélje le az "aa" szavakat "*"-ra, erdményül ezt kell kapni
" * aaa bb cc *, * aaaa cccc *, *, baa."

Fire.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#780) cellpeti válasza Fire/SOUL/CD (#779) üzenetére


cellpeti
(PH! kedvence)

én is vmi ilyenre gondolok!

pü repült!

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#781) rothkrisz


rothkrisz
(újonc)

Sziasztok

Bocsi, hogy nem fogalmaztam meg pontosan a feladatot. igen bekér egy mondatot és egy szót amit a mondatban * -ra cserél.

Egyszerűen nem jövök rá hogy lehetne megoldani!

Bocsánat hogy nem tudtam válaszolni nektek, de a netem elég rossz!

(#782) cellpeti válasza rothkrisz (#781) üzenetére


cellpeti
(PH! kedvence)

hát szerintem amit le akarsz cserélni csillagra,azt egy tömbbe kéne eltárolni
és azt egyenlővé tenni csilaggal

de...várd meg Fire véleményét is! :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#783) Benmartin válasza rothkrisz (#781) üzenetére


Benmartin
(őstag)

mintaillesztéssel, millió algoritmus van rá. pld.: [link]

Windows Portal [http://winportal.net] | http://benmartin.winportal.net

(#784) Fire/SOUL/CD válasza Benmartin (#783) üzenetére


Fire/SOUL/CD
(Szakértő)
LOGOUT blog

Hali!

Ez szép...
Egy kérésem azért lenne, privbe vagy ide beraknád nekem a kódot?
(és gyakorlati kódot kérnék, nem elméletit, komolyan érdekelne a megoldásod :R )

Fire.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#785) cellpeti


cellpeti
(PH! kedvence)

Azért engem érdekelne ez a dolog! Szó helyett csillag!
Nekem van egy ilyen progim,vagy ilyesmi. Annak a lényege,hogy beírsz egy mondatot és megadsz egy karaktert,hogy melyiket szeretnéd kicserélni,és megadsz mégegyet,hogy mire szeretnéd kicserélni

Valahogy az alapján szerintem meg lehetne csinálni,de kicsit megkeveredtem vele. Szóval Fire,vagy bárki más,ha megtudja csinálni(lehet még ma linkelek forráskódot),az szóljon majd,mert érdekel ez a prog :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#786) cellpeti


cellpeti
(PH! kedvence)

Elvesztek a programjaim...áááááááááááááááááá!!!!! :W :W :W

Megpróbálom megírni a szó helyett csillagot :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#787) amargo válasza Fire/SOUL/CD (#784) üzenetére


amargo
(PH! addikt)

Hi!

#define REHASH(a, b, h) ((((h) - (a)*d) << 1) + (b))

void KR(char *x, int m, char *y, int n) {
int d, hx, hy, i, j;

/* Preprocessing */
/* computes d = 2^(m-1) with
the left-shift operator */
for (d = i = 1; i < m; ++i)
d = (d<<1);

for (hy = hx = i = 0; i < m; ++i) {
hx = ((hx<<1) + x[i]);
hy = ((hy<<1) + y[i]);
}

/* Searching */
j = 0;
while (j <= n-m) {
if (hx == hy && memcmp(x, y + j, m) == 0)
OUTPUT(j);
hy = REHASH(y[j], y[j + m], hy);
++j;
}

}

Igazából viszont nem értem, mivel a linkelt oldalon ott van az algoritmus azt csak implementálni kell. De ezt én is a lentebb linkelt oldalról raktam be.

Bár gondolom rothkrisz nem hiszem, hogy ennyire optimalizált kódot szeretne megírni, ha ilyet akarna, akkor ismerne még pár szóban forgót: Knuth-Morris-Pratt, Quick-Search stb...

Implementációk

Az én javaslatom inkább egy sima Brute force lenne, annak megvalósítás íme:

void BF(char *x, int m, char *y, int n)
{
int i, j;
/* Searching */
for (j = 0; j <= n - m; ++j) {
for (i = 0; i < m && x[i] == y[i + j]; ++i);
if (i >= m)
OUTPUT(j);
}
}

“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!” const int GetAnswerToLifeTheUniverseAndEverything() const{ return 42; }

(#788) cellpeti válasza amargo (#787) üzenetére


cellpeti
(PH! kedvence)

Mi a **** az a Brute force? :U

|| Dell Latitude E4300 || Nokia E72 || HTC One S ||

(#789) amargo válasza cellpeti (#788) üzenetére


amargo
(PH! addikt)

Nyers erő.

Azaz, ész nélkül mindent vizsgálunk. Miközben, ha megnézed a linket, rengeteg olyan algoritmus van, ami a szöveget elemezve elég jó szabályokat állít fel.

Tehát vegyük S[1..n] szöveget és M[1..m] mintát.

Akkor a művelet igények, így alakulnak,
BF n*m.
KMP n legjobb és legrosszabb esetben is a szótár felállítása m. Én az érthetősége miatt jobban szeretem ezt, mint a RK-t, igaz az hatékonyabb, mert a mintát nem kell végigolvasnunk.
QS n/m +1

RK (Ami még említve lett) n
Viszont itt, ha sok a hamis talált, akkor a BF műveletigényével azonost kapunk.

“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!” const int GetAnswerToLifeTheUniverseAndEverything() const{ return 42; }

(#790) Jester01


Jester01
(PH! addikt)

Azért vegyük észre, hogy az eredeti feladatban szavak szerepelnek. A fenti megoldások mind megtalálnák (kicserélnék) a betűkombináció összes előfordulását. (pl. ha az alma szót kellene *-ra cserélni, akkor a hatalmas szóból is hat*s lenne.)

Jester

(#791) Dirty_Pio


Dirty_Pio
(újonc)

Sziasztok, volna egy kis problemam egy programmal... eleg sok errort kidob, de en nem ertem mia baja. Az errorok a figgvenyekre vonatkoznak nagyreszben, azzal a szoveggel, hogy pl. az elso fuggvenybe x has a forward declaration. A feladat szovege:Write a program to add two large integer numbers of length up to 80 digits (no predefined type offers this range/precision !). One approach is to treat each number as an array of digits. The two integers (arrays) are added element by element, carrying from one element to the next when necessary. Each number is read digit by digit (a loop of getchar() until end of line is encountered) and stored in an array of digits.

//program 5.6 (lab)
#define MAX 81
#include <stdio.h>
#include <stdlib.h>
int reading(int x[];int max)
{
int i,c;
while (c=getchar()!=EOF)
{
x[i]=c-'0';
i++;
}
i--;
return i;
}
int add(int a; int b; int r)
{
int s;
s=a+b+r;
return s;
}
int reminder(int a; int b; int r)
{
int s;
s=(a+b+r)/10;
return s;
}
int main(void)
{
int i,j,k,r;
int x[MAX],y[MAX],z[MAX];
i=reading(x,MAX);
j=reading(y,MAX);
r=0;
for (k=0; (k<=i) && (k<=j); k++)
{
z[k]=add(x[k],y[k],r);
r=reminder (x[k],y[k],r);
}
if (i<j) for (k; k<=j; k++)
{
z[k]=add(0,y[k],r);
r=reminder(0,y[k],r);
};
else
for (k; k<=j; k++)
{
z[k]=add(0,x[k],r);
r=reminder (0,x[k],r);
};
z[k++]=r;
for (i=0;i<(k+1);i++)
printf("%i \n",z[i]);
system("pause");
return(0);
}
na asszem megvan a baj... a figgvenybe ; hasznaltam , helyett grrr..

[ Szerkesztve ]

(#792) Dirty_Pio válasza Dirty_Pio (#791) üzenetére


Dirty_Pio
(újonc)

Nos, a problemanak azt a felet megoldottam, amiert eredetileg ide irtam, de a javitott programban problemaim vannak a vektor ertekeinek a beolvasasaval, azaz minden esetben az vektor erteke -47 lesz. Beirom a javitott programot mert kozben voltak meg kissebb hibak a fentebbiben:
//program 5.6 (lab)
#define MAX 81
#include <stdio.h>
#include <stdlib.h>
int reading(int x[],int max)
{
int i=0,k,c;
while ((c=getchar()!=EOF)&&(i<max))
{
x[i]=c-'0';
i++;
}
i--;
return i;
}
int add(int a, int b, int r)
{
int s;
s=(a+b+r)%10;
return s;
}
int reminder(int a, int b, int r)
{
int s;
s=(a+b+r)/10;
return s;
}
int main(void)
{
int i,j,k,r;
int x[MAX],y[MAX],z[MAX];
for (k=0;k<80;k++)
{
x[k]=0;
y[k]=0;
}
i=reading(x,MAX);
j=reading(y,MAX);
printf("%i %i\n",i,j);
r=0;
for (k=0; (k<=i) && (k<=j); k++)
{
z[k]=add(x[k],y[k],r);
r=reminder (x[k],y[k],r);
}
if (i<j) for (i=k; i<=j; i++)
{
z[i]=add(0,y[i],r);
r=reminder(0,y[i],r);
}
else
for (j=k; j<=i; j++)
{
z[j]=add(0,x[j],r);
r=reminder (0,x[j],r);
}
z[k++]=r;
for (i=0;i<(k+1);i++)
printf("%i \n",z[i]);
system("pause");
return(0);
}

(#793) Jester01 válasza Dirty_Pio (#792) üzenetére


Jester01
(PH! addikt)

Mert nem EOF-ig kellene olvasni a reading függvényben.
Ettől mondjuk még nem lesz jó, csak jobb :N

MOD: például jó lenne a jegyeket inkább jobbról balra összeadni.
A reminder-t egyébként carry-nak hívják.

[ Szerkesztve ]

Jester

(#794) Jester01 válasza Dirty_Pio (#792) üzenetére


Jester01
(PH! addikt)

A -47 hibás zárójelezés miatt van, ugyancsak a reading függvényben, a while feltételben.

Jester

(#795) Dirty_Pio válasza Jester01 (#794) üzenetére


Dirty_Pio
(újonc)

Koszi a segitseget. A progi mukodik es huh.. jo sokmindent elneztem... szoval tenyleg ugy van hogy a gep azt csinalja amit mondunk neki s nem azt szeretnenk.

[ Szerkesztve ]

(#796) Dirty_Pio


Dirty_Pio
(újonc)

Na megint van egy kerdesem. Egy matrixot probalok beolvasni de azt a hibauzenetet kapom, hogy max1 was not declared in this scope. Az ha jol tudom valami oylasmit jelent hogy a fuggveny nem tudja ahsznalni mert kivul esik a hataskoren.
#include <stdio.h>
#include <stdlib.h>
#define ROW 4
#define COL 5
int readnr (void)
{
int i=0;
char x[5],c;
while ( ((c=getchar()) != '\n') && (i<5))
{
x[i]=c;
i++;
}
if (x[i-1]=='\n') x[i-1]='\0';
else x[i]='\0';
i = atoi(x);
return i;
}
void mread (int max1, int max2, int q[max1][pmax2])
{
int i,j;
for (i=0; i<=max1;i++)
for (j=0; j<=max2; j++)
q[i][j]=readnr;
}
printm (int max1, int max2, int q[max1][pmax2])
{
int i,j;
for (i=0; i<=max1;i++)
{
for (j=0; j<=max2; j++)
printf("%4i ",q[i][j];
printf("\n");
}
}
int main (void)
{
int max1=ROW,max2=COL;
int a[ROW][COL];
mread(max1,max2,a);
printm(max1,max2,a);
system("pasue");
return(0);
}

(#797) Jester01 válasza Dirty_Pio (#796) üzenetére


Jester01
(PH! addikt)

A dinamikus tömb kezelés nem egyszerű C-ben. Jelen esetben javaslom, hogy a függvényparaméterekben a ROW és COL makrókat használd, pl így:
void mread (int max1, int max2, int q[ROW][COL])
Persze a max1 és max2 átadása ekkor már szintén fölösleges.

Van még pár apró hiba benne, gondolom azokat majd megleled vagy ha nem, akkor kérdezel ;)

Jester

(#798) Dirty_Pio válasza Jester01 (#797) üzenetére


Dirty_Pio
(újonc)

Nos egy utolso hiba maradt amivel nem sikerult megbirkoznom: az mreadben amikor a q[i][j] -nek ertekul akarom adni a readnr fuggvegy erteket akkor kidobja azt az errort, hogy invalid conversion from 'int(*)()' to 'int '. Ez mit jelent es a masik dolog: miert nem fogadta el a ROW/COL helyett a max1/max2 -t ?

(#799) Jester01 válasza Dirty_Pio (#798) üzenetére


Jester01
(PH! addikt)

Azért mert lemaradt a () hogy függvényhívás legyen. Így a függvénypointert akartad értékül adni.
A max1/max2-t meg azért nem, mert azt így C-ben sajnos nem lehet. A tömb méretnek (ha nem pointerként adod át) konstansnak kell lennie.

Jester

(#800) Dirty_Pio válasza Jester01 (#799) üzenetére


Dirty_Pio
(újonc)

Hi, erre nem igazan tudom a valaszt, hogy miert nem megy:

#include <stdio.h>

#include <stdlib.h>



void create_and_fill_array2(int * a, int n) {

a=(int *)malloc(sizeof(int)*n);

int i;

for (i=0; i<n; i++)

*(a + i)=i;

}

void print_array(int *tab,int n) {

int i;

for (i=0; i<n; i++)

printf("%d ",tab[i]);

}



int main (void) {

int *b;

create_and_fill_array2(b,5);

print_array(b,5);

return 0;

}

ha a figgvenyen kivul hasznalom a malloc() -t akkor nincsen semmi problema.

Hirdetés

Copyright © 2000-2013 PROHARDVER Informatikai Kft.