Új hozzászólás Aktív témák
-
félisten
válasz cellpeti #750 üzenetére
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 )
De talán programozástechnikailag találsz bent alkalmazható megoldásokat, elveket és segíthet legközelebb egy másik feladat megoldásában...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)
-
cellpeti
veterán
Ez mi?????
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!
[ Szerkesztve ]
Tigris, tigris, csóvafény...
-
cellpeti
veterán
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 ]
Tigris, tigris, csóvafény...
-
nukewar
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? -
kiskatus
csendes tag
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;
} -
félisten
-
cellpeti
veterán
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!Tigris, tigris, csóvafény...
-
kiskatus
csendes tag
Hali!
Még nem tanultunk dinamikus memóriafoglalást.[ Szerkesztve ]
-
félisten
válasz kiskatus #757 üzenetére
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.
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"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" 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)
-
Jester01
veterán
válasz Fire/SOUL/CD #761 üzenetére
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
-
cellpeti
veterán
válasz Jester01 #764 üzenetére
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!Tigris, tigris, csóvafény...
-
félisten
válasz Jester01 #764 üzenetére
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)
-
félisten
válasz cellpeti #765 üzenetére
Hali!
Köszönöm a hozzászólást!
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)
-
cellpeti
veterán
válasz Fire/SOUL/CD #767 üzenetére
Fire.
UI: szerintem is többet ér megírni egy progit, mintha nem válaszolna rá esetleg senkiEz így van!
Tigris, tigris, csóvafény...
-
kiskatus
csendes tag
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! -
Lortech
addikt
válasz Fire/SOUL/CD #767 üzenetére
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.Thank you to god for making me an atheist
-
félisten
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 )
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 )
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)
-
rothkrisz
csendes tag
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
-
cellpeti
veterán
válasz Fire/SOUL/CD #777 üzenetére
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!
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?[ Szerkesztve ]
Tigris, tigris, csóvafény...
-
félisten
válasz cellpeti #778 üzenetére
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)
-
cellpeti
veterán
válasz Fire/SOUL/CD #779 üzenetére
én is vmi ilyenre gondolok!
pü repült!
Tigris, tigris, csóvafény...
-
rothkrisz
csendes tag
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!
-
félisten
válasz Benmartin #783 üzenetére
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 )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)
-
cellpeti
veterán
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élniValahogy 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
Tigris, tigris, csóvafény...
-
cellpeti
veterán
Elvesztek a programjaim...áááááááááááááááááá!!!!!
Megpróbálom megírni a szó helyett csillagot
Tigris, tigris, csóvafény...
-
amargo
addikt
válasz Fire/SOUL/CD #784 üzenetére
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...
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!”
-
amargo
addikt
válasz cellpeti #788 üzenetére
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 +1RK (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!”
-
Jester01
veterán
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
-
Dirty_Pio
csendes tag
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 szovegerite 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 ]
-
Dirty_Pio
csendes tag
válasz Dirty_Pio #791 üzenetére
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);
} -
Dirty_Pio
csendes tag
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);
} -
Jester01
veterán
válasz Dirty_Pio #796 üzenetére
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
-
Dirty_Pio
csendes tag
válasz Jester01 #797 üzenetére
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 ?
-
-
Dirty_Pio
csendes tag
válasz Jester01 #799 üzenetére
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.
Ú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!