- Külföldi SIM-ek itthon
- Milyen okostelefont vegyek?
- Mobil flották
- Samsung Galaxy Watch6 Classic - tekerd!
- Apple iPhone 15 Pro Max - Attack on Titan
- Honor 400 - és mégis mozog a kép
- Xiaomi 15 - kicsi telefon nagy energiával
- A sógorokhoz érkezik a kompakt Vivo X200 FE
- Csak semmi szimmetria: flegma dizájnnal készül a Nothing Phone (3)
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
Aktív témák
-
TheVeryGuest
senior tag
Az, hogy lehagyja az első karcsit, a getc miatt van. Használd az feof(f)-et helyette. De szerintem ez összefossa magát ha a sorban van SPACE. Persze lehet, hogy tévedek, de mintha én próbáltam volna ezt, és külön olvasta volna be szavanként. Használj fscanf helyett fgets-t, az a tuti.
-
TheVeryGuest
senior tag
Persze ha fgets-t használnátok, ahogy én tettem nem kellene szopni semmivel, mert beolvas pont egy EOL-ig egy sort, illetve a visszatérési értéke 0, ha hiba volt, vagy EOF. Utána egy fprintf-fel már csak ki kell írni a fileba a mezőket, a konverziót elvégzi magától.
''sokkal kevésbé átlátható''
Inkább látszik, hogy jávázol, ahol minden adattípus absztrakt, oszt lehet nyomni rá az operátorokat, nem olyan HW közeli, mint a jó öreg C és a beépített függvények. Az ilyenek miatt lassú a java. Mert így mindig a sor régi hossza + az új cucc hossza karakter ''másolódik'', ahelyett, hogy csak az új hossznyit írnánk a végére. -
TheVeryGuest
senior tag
Na igen. Két dologgal lehet problémád. Nem tudsz egy feladatot algoritmizálni vagy nem ismered az adott programozási környezetet. Az első példából az elsőre lehet következtetni a másodikból a másikra.
Attól, hogy itt elmondjuk/megoldjuk nem biztos, hogy fejlődsz. Ha viszont nekimész és végigtrace-eled és rájössz magadtól, illetve végigolvasod hogy milyen függvények vannak a standard library-kben biztosan tanulsz valamit. Tudom ez az érdeklődés manapság nem követelmény az informatikusoknál. Most az a menő, hogy egyik végzett infós röhögve meséli a másiknak: ''Bazzeg, van diplomám, de egy büdös sort nem tudok programozni!''
Ha minket akarsz szórakoztatni, akkor viszont bonyolultabb feladatokat kérünk. -
TheVeryGuest
senior tag
vagy sprintf, az a tuti. Az itoa nem ANSI C-s szerintem, Linux-on nincs.
Mellesleg miért mi csináljuk a házidat? Az elsőt egy jó debuggerrel lépésenként végrehajtva ki lehet okoskodni, én is így csináltam.Kezdj barátkozni a debugger-rel, az a programozó legjobb barátja. A másik a kávéfőző. A harmadik a pizzásdoboz.
-
TheVeryGuest
senior tag
#include <stdio.h>
#include <string.h>
int main (int argc,
char **argv)
{
FILE *in, *out;
char text[255];
int s;
if (argc < 2) {
fprintf(stderr, ''<ERROR> Insufficient arguments\n'');
return 1;
}
in = fopen(argv[1], ''rt'');
if (!in)
{
fprintf(stderr, ''<ERROR> file open failed (%s)\n'', argv[1]);
return 1;
}
out =fopen(argv[2], ''wt'');
if (!out) {
fprintf(stderr, ''<ERROR> file open failed (%s)\n'', argv[2]);
fclose(in);
return 1;
}
for (s = 1; !feof(in); ++s) {
if (!fgets(text, 255, in)) {
break;
}
fprintf(out, ''%3d %3d %s'', s, strlen(text) - 1, text);
}
fclose(in);
fclose(out);
return 0;
} -
TheVeryGuest
senior tag
Elég gáz scanf-et használni file-ból olvasásra. Használj helyette gets-t, esetleg getc-t de akkor neked kell összerakni a string-et és keresni a CR/LF-et.
Ez működik jól, mondjuk kicsit keveredik benne a C és a C++:
#include<cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int main (int argc,
char **argv)
{
FILE *in, *out;
char text[255];
int s;
if (argc < 2) {
cerr << ''<ERROR> Insufficient arguments\n'';
return 1;
}
in = fopen(argv[1], ''rt'');
if (!in)
{
cerr << ''<ERROR> file open failed ('' << argv[1] << '')\n'';
return 1;
}
out =fopen(argv[2], ''wt'');
if (!out) {
cerr << ''<ERROR> file open failed ('' << argv[2] << '')\n'';
fclose(in);
return 1;
}
for (s = 1; !feof(in); ++s) {
if (!fgets(text, 255, in)) {
break;
}
fprintf(out, ''%3d %3d %s'', s, strlen(text) - 1, text);
}
fclose(in);
fclose(out);
return 0;
} -
TheVeryGuest
senior tag
Ez a orgona-rendezés egy f@szság. Szerintem semmi gyakorlati haszna nincs, csak amolyan csavarjunk egyet a rendezésen programozási ujjgyakorlat. Én minimum-elem kiválasztásos rendezést használnék. Vagyis megkeresném a legnagyobb elemet a tartományon, ami kezdetben a teljes tömb. Aztán minden páratlannál az bal szélére tenném a tartománynak, és a tartomány bal szélét léptetném, minden párosnál pedig a jobb szélére és a jobb szélét léptetném visszafelé. Mindezt addig, míg a két vége összeér vagy csak egy elem van a tartományban.
int main(void) {
int vector[] = {12, 2, 45, 7, 34, 67, 1, 8, 9, 10, 21};
int max_el_cnt = sizeof(vector) / sizeof(int);
// initial values
int left = 0;
int right = max_el_cnt;
int turn = 0;
// loop till no element or one element left
while (right - left > 1) {
// chosing the max value from the range
int max = vector[left];
int max_ind = left;
for (int i = left + 1; i < right; ++i) {
if (vector > max) {
// new max
max = vector;
max_ind = i;
}
}
int dst_ind;
// alternating destination
if (0 == (turn % 2))
{
dst_ind = left;
++left;
} else {
--right;
dst_ind = right;
}
// swapping elements if needed
if (max_ind != dst_ind) {
vector[max_ind] = vector[dst_ind];
vector[dst_ind] = max;
}
// counting turns
++turn;
}
return 0;
}
[Szerkesztve] -
TheVeryGuest
senior tag
A void visszatérési érték a C-s stílus, a nemírok oda semmit és void-ot jelent a C++-os. Mellesleg még úgy a szabványosítás táján volt olyan, hogy ha nem írtál oda semmit az int-et jelentett, de ennek már sanyi. Azért sztem a Borland C++ 2.0 még támogatja, vagy talán állítható az optionsben már nem emlékszem.
Aktív témák
Hirdetés
- Xiaomi 11T Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 13 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 14 Plus 128GB, Kártyafüggetlen, 1 Év Garanciával
- !FELVÁSÁRLÁS! RTX 4090 KORREKT ÁRON AZONNAL
- GAMER PC - RYZEN 5 5500 / ASUS RTX 2060 / AORUS 16GB DDR4 / 512GB SSD / 500GB HDD
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Lenovo S10-2 Intel Atom retró csajszis netbook eladó
- Azonnali készpénzes INTEL CPU NVIDIA VGA számítógép felvásárlás személyesen / postával korrekt áron
- Bomba ár! Dell Latitude E5570 - i5-6300U I 8GB I 256GB SSD I 15,6" FHD I HDMI I CAM I W10 I Gari!
- Újra Akcióban!!! Ducky One 2 Mini és SF billentyűzetek a bolti ár töredékéért! Számla+Gari
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest