Ú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
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!
- btz: Internet fejlesztés országosan!
- Kerékpárosok, bringások ide!
- OLED TV topic
- Xbox Series X|S
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Milyen notebookot vegyek?
- Samsung Galaxy A56 - megbízható középszerűség
- Motorola Edge 50 Neo - az egyensúly gyengesége
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Revolut
- További aktív témák...
- ÚJ Dell Latitude 15 5550 - 15.6"FullHD IPS - Ultra 5 135U - 16GB - 512GB SSD - Win11 - 2,5+ év gari
- Eladó teljesen felújított Apple iPhone Xr 64GB / 12 hó jótállás
- Akciós Windows 10 pro + Office 2019 professional plus csomag AZONNALI SZÁLLÍTÁS
- Intel Core i5 3470 confidential Ivy bridge Quad Core
- Dell Precision 5820 XL PC - Xeon W-2123 112GB RAM 512GB SSD 1TB HDD RX 580 GTS 8GB Win 11
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest