-
IT café
Új hozzászólás Aktív témák
-
Tottu
senior tag
Nekem a C-vel kapcsolatban lenne egy kérdésem: hogy lehet egy teljes sort beolvasni egy fileból, és ugyan ezt karakterenként? Próbáltam fscanf-el de egyszerűen nem olvas be semmit. A file kiírás talán menne, mert a file-t létrehozza.
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
válasz Pho3bus #2091 üzenetére
Te is szenvedsz a progival?
Nekem már kész van a terv.(remélem fog is működni, ha nem akkor... )
Egyébként az én feladatom: beolvas egy ELŐJELES számot egy file-ból (MAX számjegy: 100db, MIN hogy ne férjen bele egy változóba se ) ezután van egy műveleti jel + vagy - és a következő szám egészen addig amig nem olvasunk be egy = jelet.
Előszőr nem is gondoltam hogy ilyen nehéz lesz, de amikor elkezdtem gondolkozni azon hogy mi van ha ''-'' -hoz adok hozzá egy számot, és az első szám kisebb mint a második (természetessen a negatív számot ha pozitívnak veszem), akkor előjel váltás következik be. Nah ez az egyik eset, de lehet még bőven ragozni.
Nekem ehez kb 3 óra volt szükséges hogy rájöjjek mit és hogyan kell csinálni."A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Az folyamat már kéc.
Inkább a file kezeléssel lennének gondok: próbáltam olyan progit írni ami beolvas egy file-t és annak a tartalmát átírja egy másikba. De nekem soha nem sikerült beolvasni. (Vki írna egy példa progit? )
A C-ben van olyan függvény ami megvizsgálja hogy sikeresen nyitottam-e meg a file-t? (mint Pascal-ban az IORESULT)"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Ezt kifejtenéd egy kicsit bővebben? Az órán nem nagyon foglalkoztunk még filekezeléssel, csak annyit hogy milyen függvényeket kell használni, könyvem meg még nincs
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
-
Tottu
senior tag
Kellene még egy kis segítség:
Ez van a be.txt file-ban:
23
+
6
Nah és most, a sorokat beolvasom az fgets egyesével 1-1 tömb-be. Eldöntöm, hogy milyen műveletet is kell majd elvégezni. Ezután jönnek a gondok, mert a tomb az char típusú és így nem kapok valós eredményt. Próbáltam már típus kényszerítéssel is:
eredmeny=(char)eredmeny+(char)uj_szam; (DE így sem lett jó)
Másik gond ami felmerült: az fgets a tomb-be 0-tól kezdi feltölteni a tömb-t, de ahoz hogy összetudjam adni vagy kitudjam vonni a számokat ahoz jobbra kellene igazítani, és így a a tömb legnagyobb indexétől kellene feltölteni. Erre nincs vmi ötletetek?"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Sikerült átkonvertálni a számot, szóval tudok már számolni!
tomb = (int)tomb-48;
De ha van vkinek egyszerűbb ötlete akkor azt szivessen várom!
A tömb rendezés még nem megy"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Sikerült mindegyik problémát megoldani kaptam is 2 pontot rá a 10ből!
A lényeg: ugye max 100 számjegyű lehet a (előjeles) szám és egy fileból kell beolvasni. Előszőr is a file beolvasás utána át kellett konvertálni a karakter számmá hogy számolni tudjak vele. Ezt követően beállítottam a szám előjelét (tömb 0. indexéhez írtam egy ' + ' vagy ' - '). Jött a jombra igazítás (ez lehet fölösleges volt tényleg, mert az említet strlen () függvénnyel meglehetett volna oldani, de én a ''papíros'' módszernél maradtam. Azaz jobbra kell igazítani a számokat és úgy összeadni ill. kivonni egymásból). Ha a rendezés előjel meg van jött a művelet eldöntése amit lehet variálni rendedessen (szam1 pl.: - ; szam2: - ; és a művlet is - akkor összeadás kell, és az eredménynél is történhet előjel változás, amikor a szam1 kisebb mint a szam2, stb...)"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Működk az csak nem 100%-os. Eddig azzal (is) voltak gondok hogy a műveletijel össze vissza változhat és az nem működött rendessen, de azt kijavítottam és így kaptam 2 pontot. Tudtommal egy hiba van még, mégpedig abban az esetben amikor a művelet elvégzése után meg változik az előjel. Ekkor vmi naon cifra szám jön ki (az előjel az jó) Már többször végig próbáltam papíron is, de nem tudtam rájönni mi lehet a gond. De majd ha lesz még időm akkor leülök elé és próbálkozom.
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Pont így csináltam, nem tudom mennyire érdekel téged, de majd kicsit átrendezem a forrást és átküldöm. Ahogy megcsináltam a problémás részt, szerintem jónak kell lennie, de vmiért mégsem jó
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Elkezdtem ujra a progit, de vmi nem stimmel a beolasással:
#include <stdio.h>
#include <string.h>
FILE *fbe , *fki;
int main (){
long int eredmeny[2] , kov_szam[2];
int i;
char elojel[1] , muv[1];
fbe = fopen(''be.txt'',''r'');
fki = fopen(''ki.txt'',''w'');
fgets(elojel,1,fbe);
if (elojel[0] == '-'){
eredmeny[0]= '-';
fscanf (fbe , ''%d'' , &eredmeny[1]);
} else {
eredmeny[0]= '+';
}
printf (''%d%d'',eredmeny[0],eredmeny[1]);
scanf(''%d'',&muv);
fclose (fbe);
fclose (fki);
return 0;
}
Az benne a bibi, hogy fordítva olvassa be a számokat: pl.: 234 helyett 432."A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Üdv!
Olyan kérdésem lenne, hogy ismertek-e olyan progit vagy vmilyen megoldást arra, hogy hogyan lehetne egy sima C programnak lemérni a futási idejét?
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
válasz kicsitomi88 #3028 üzenetére
Köcce! Pedig ott is kerestem, de úgy tűnik rosszúl... THX mégegyszer!
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
Üdv mindenkinek!
Egy kis segítségre lenne szükségem az alábbi programmal kapcsolatban:
Olyan programot kell írni, ami adott S szóra(max 2000 karakter) és k értékre kiszámítja a leghosszabb olyan kezdőszelet hosszát, amely legfeljebb k betű törlésével tükörszóvá tehető! A program adjon is meg egy ilyen törlést.
Pl.:
Bemenet
2
emeletesKimenet
7 2
2 6A kimenet első sorának első száma a kezdőszelet hossza, a második szám pedig, hogy hány karakter törlésével tehető tükörszóvá. A második sor pedig a törlendő karakterek sorszáma.
Találtam, hozzá egy jó anyagot ami első ránézésre jónak tűnt így egyből neki is fogtam: megírtam a progit, ami a fent említett példára tökéletes működött, majd én is csináltam pár példát amiben volt már egy hibás kimenet. Gondoltam leteszteltetem élesben és kaptam rá 2 pontot a 16-ból ami elég karcsú(min. 8 kell). Ezután jöttem rá, hogy teljessen rossz úton indultam el.
Nah most kellene egy másik kiinduló pont, azonban nem tudom hogyan lehetne egy optimális megoldást találni, ugyanis van idő és memória korlát is: 0.2s időkorlát, és 32MB memória áll a rendelkezésre. Elméletileg Dinamikus programozással kell megoldani, ami egy 2000x2000-es táblából(tömb-ből) áll, amit úgy töltünk fel, hogy az előző részproblémák eredményeit felhaszáljuk.
Ha vkinek van ötlete akkor azt szívessen várom![ Szerkesztve ]
"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
-
Tottu
senior tag
-
Tottu
senior tag
Helló!
Lenne egy kisebb-nagyobb gondom. Egy programot sikerült tökéletesre megcsinálni az alábbi paraméter átadással:
//A main függvény az alábbi sorokat tartalmazza
//Gráfpontok létrehozása
CGrafNode* graf_node1 = new CGrafNode(1);
CGrafNode* graf_node2 = new CGrafNode(2);
CGrafNode* graf_node3 = new CGrafNode(3);
CGrafNode* graf_node4 = new CGrafNode(4);
CGrafNode* graf_node5 = new CGrafNode(5);
CGrafNode* graf_node6 = new CGrafNode(6);
CGrafNode* graf_node7 = new CGrafNode(7);
CGrafNode* graf_node8 = new CGrafNode(8);
CGrafNode* graf_node9 = new CGrafNode(9);//Gráfpontokat összekötő élek létrehozása
new CGrafLine(graf_node1, graf_node2);
new CGrafLine(graf_node2, graf_node3);
new CGrafLine(graf_node2, graf_node1);
new CGrafLine(graf_node1, graf_node6);
new CGrafLine(graf_node3, graf_node4);
new CGrafLine(graf_node4, graf_node5);
new CGrafLine(graf_node5, graf_node3);
new CGrafLine(graf_node5, graf_node8);
new CGrafLine(graf_node6, graf_node7);
new CGrafLine(graf_node7, graf_node6);
new CGrafLine(graf_node7, graf_node8);
new CGrafLine(graf_node8, graf_node9);
new CGrafLine(graf_node9, graf_node8);
new CGrafLine(graf_node3, graf_node6);//Eredmény kiírása
graf_node4->PrintUnavailableNode();A fent leírt módon tökéletessen lefut a program, és helyes eredményeket adja is vissza. Azonban nekem file-ból kell beolvasni. Ezt is megoldottam az alábbi módon:
int NodeNumber, GrafLineNumber, StartNode;
ifstream FIn("be.txt");
ofstream FOut("ki.txt");FIn >> NodeNumber;
FIn >> GrafLineNumber;
FIn >> StartNode;CGrafNode* Graf[10000];
for(int i=1 ; i<=NodeNumber ; i++){
Graf[i] = new CGrafNode(i);
}for(int i=1 ; i<=GrafLineNumber ; i++){
int FromNode, ToNode;FIn >> FromNode;
FIn >> ToNode;
new CGrafLine(Graf[FromNode], Graf[ToNode]);
}
Graf[StartNode]->InternalGetUnavailableNode();Azonban ha így hozom létre az objektumokat akkor már hibássan működik a program. Le ellenőriztem a beolvasott adatokat, és abban nem volt hiba. Mivel az első megoldásnál jó volt a program kimenete, így az algoritmusnak is jónak kellene lenni-e.
Mi lehet a gond?"A legnagyobb hiba, amit az életben elkövethetsz, az a folyamatos rettegés attól, hogy hibázni fogsz.“ - Elbert Hubbard
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Garancia kérdés, fogyasztóvédelem
- Prohardver app (nem hivatalos)
- exHWSW - Értünk mindenhez IS
- Lelövi a Roccat márkanevet a Turtle Beach
- Zenless Zone Zero - Középpontban Billy
- Milyen routert?
- Politika
- Új gyártástechnológiai útitervvel állt elő a TSMC
- Milyen billentyűzetet vegyek?
- További aktív témák...