Hirdetés
- Fordulat: időben startol S26+, nézd meg, milyen lesz!
- Olyan lesz a Google Térkép, mint a segítőkész haver az anyósülésen
- Nem lesz olcsó a Realme GT 8 Pro Európában
- 1 VII Japán
- Azonnali mobilos kérdések órája
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Redmi Note 14 5G - jól sikerült az alapmodell
- Xiaomi 15T Pro - a téma nincs lezárva
- Mobil flották
- Samsung Galaxy S22 Ultra - na, kinél van toll?
Új hozzászólás Aktív témák
-
skylaner
senior tag
válasz
stranger28
#4193
üzenetére
Szia!
Én annyit tennék hozzá, hogy mivel 0-tól 100-ig fogsz számokat tárolni így felesleges memória pazarlás int-et használni.
unsigned char *palyak;Illetve a többi változó is lehetne char/unsigned char.
-
Jester01
veterán
válasz
stranger28
#4198
üzenetére
Szerintem alapvetően nincs baj az int*-al, bár tény, hogy C-ben ilyen nincs de szerintem olvashatóbb. Személy szerint szigorúan követem a soronként csak 1 változó elvet, így a "hová tartozik a *" probléma nem érint.
Ja és még a beolvasásod nem bolondbiztos. Igaz, azt C-ben nehéz is csinálni, de első körben legalább a scanf visszatérési értékét ajánlott ellenőrizni.
-
buherton
őstag
válasz
stranger28
#4193
üzenetére
Kiegészítés (#4195) dabadab hsz-re.
1. feleslegesek a typecast-ok és a jövőben kerüld ezeket, mert könnyen kerülhetsz olyan helyzetbe, amikor jön a fej vakarás, mert nem fut a kód, mint például:
void foo(long *bar)
{
*bar = 23424234;
}
int main(void)
{
char bar;
foo(&bar);
return 0;
}2. formázás: ez az adott sor végére rakni a { nem C-szerű formázás, hanem tán a Java-ból jön, és ajánlott ott használni. Továbbá próbáld kialakítani a saját stílusod, és tartsd magad ahhoz, mert könnyebb neked és másnak is olvasni a kódod.
int* foo; helyett int *foo; mert ebből is lehetnek gondok, mint int* foo, bar; és két pointer helyett lesz egy pointer és egy változó, és nincs olyan típus, hogy int pointer, hanem int-re mutató pointer van csak.
3. óvatosan az ilyenekkel:
for(i=0;i<n;i++)
if (palyak[i]==0)
{
nemsi_index[a]=i;
a++;
}Ugyanis nem feltétlenül portable a kód. Sajnos nem mindegyik fogadja el így ezt a formát. Az ilyen formával már kevésbé lehet gond:
for(...)
{
if(...)
...;
...;
} -
válasz
stranger28
#4193
üzenetére
Par dolog:
0. Az egesz cuccban egy darab komment sincs, pedig azt erdemes gyakorolni, mert kulon tudomany.
1. "magic value"-ket a kodba irni nem tul jo gyakorlat, jobb konstanskent kezelni oket, illetve C-ben makrokent, szoval "#define MIN100_NOT_FOUND -1"
2. A free()-ket erdemes pont forditott sorrendben meghivni, mint a malloc()-ot, egyreszt, mert ugy maradnak meg szepen a blokkok, masreszt meg lehet, hogy egy kesobb malloc()-olt strukturaban egy pointer egy elozoleg lefoglalt memoriateruletre mutat - es ha az elso free()-zed, a masodikrol meg azt gondolod, hogy az meg ervenyes adatokat tartalmaz, abbol baj lesz.
3. A valtozoneveket (konstansokat, makrokat, file-okat, kommenteket) angolul tessek irni.
4. A nemsi_index teljesen felesleges. Lehetne mondani, hogy azert van igy, hogy meglegyen a funkcionalis tagolas (beolvasas, feldolgozas, kiiras), de ez egyebkent sincs meg (amire teljesen elfogadhato magyarazat, hogy igy hatekonyabb a kod - leszamitva ezt a franya nemsi_indexet).
5. Ha megis a tagolas mellett dontenel, akkor erdemes lenne azt harom fuggvenybe kirakni.
-
greenity
senior tag
válasz
stranger28
#4193
üzenetére
Nekem tetszik, nálam elég úri lenne

-
Jester01
veterán
válasz
stranger28
#4077
üzenetére
#include <stdio.h>
#include <string.h>
int main()
{
unsigned char stats['z' - 'a' + 1] = {0, };
int duplicate = 0;
int word = 1;
int c;
while((c = getchar()) != EOF) {
if (c == '\n') {
if (duplicate == 0) break;
memset(stats, 0, sizeof stats);
duplicate = 0;
word = 1;
continue;
}
if (c == ' ') {
word = 1;
continue;
}
if (word == 0) continue;
word = 0;
c -= 'a';
if (c < 0 || c >= sizeof stats) continue;
duplicate = (stats[ c ]++ > 0);
}
return 0;
}Hosszt nem ellenőriz, csak angol kisbetűs szavak számítanak és csak szóköz után.
-
Jester01
veterán
válasz
stranger28
#4075
üzenetére
Aki ezt a specifikációt írta azt fel kellene pofozni
![;]](//cdn.rios.hu/dl/s/v1.gif)
Mi az, hogy stringeket olvas? Sorokat, gondolom, aminek a végén valamilyen soremelés van.
Mit csináljon, ha több mint 30 karakter egy sor?
Hogyan definiáljuk a szavakat? Írásjelekkel mi a helyzet?
Milyen ábécét használjunk - magyart vagy angolt? Előbbi esetén mi legyen a kettősbetűkkel? Kisbetűk és nagybetűk egyformák?Hirtelen csak ennyi problémát látok ami nélkül tulajdonképpen el sem lehet kezdeni.
Ú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!
- Eladó EVGA 700 W1
- i7 10700/ RTX2080Ti/ 32GB DDR4 alapú konfig/ garancia/ ingyen foxpost
- Újszerű Ps5 Kontrollerrek Garanciával
- Acer Nitro 16 - 16" WQXGA 165Hz - Ryzen 7 8845HS - 16GB - 1TB - Win11 - RTX 4070 - Garancia
- Samsung Galaxy S23 8/256GB, Megkímélt, Kártyafüggetlen, Töltővel, 1 Év Garanciával!
- BESZÁMÍTÁS! Asus H370 i5 9600K 16GB DDR4 512B SSD RTX 2060 Super 8GB Chieftec HC-10B-OP Zalman 850W
- Bomba ár! Dell Latitude 5530 - i5-1240P I 16GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gari!
- HIBÁTLAN iPhone 13 Pro 256GB Sierra Blue 1ÉV GARANCIA -Kártyafüggetlen, MS3744, 100% Akkumulátor
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- 173 - Lenovo Legion Pro 7 (16IAX10H) - Intel Core U9 275HX, RTX 5080
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő

![;]](http://cdn.rios.hu/dl/s/v1.gif)


