Šta je novo?

[HELP]C zadatak ili "nazovi ovo C problemom"

ZeeGerman

Čuven
Učlanjen(a)
05.01.2002
Poruke
2,535
Poena
725
Moja oprema  
CPU & Cooler
AMD Ryzen 7 7800X3D & DeepCool LS720 WH
Matična ploča
Gigabyte AORUS Elite AX ICE AMD B650
RAM
32GB Corsair Vengeance DDR5-6000 CL30
GPU
PowerColor 7800 XT Hellhound Spectral White
Storage
Samsung 980 PRO 1TB & 2x500GB SSDs
Zvuk
on board
PSU
THERMALTAKE Toughpower GF A3 Snow 850W
Kućište
Lian Li O11 Dynamic EVO RGB
Monitor
DELL 27" VA S2722DGM
Miš & tastatura
Logitech MX Master 3S & Genesis Thor 303
Ostale periferije
Synology DS 220+
Laptop
DELL Latitude 5410
Tablet
Samsung Galaxy Tab S7+
Mobilni telefon
Honor Magic6 Pro
Pametni uređaji
Usisivač!? Jesam učestvovao u diskusiji, ali baš da koristim tako nešto.... :D
Pristup internetu
  1. Optički internet
Kako uraditi ovo da radi!?

U datoj tekstualnoj datoteci MERE.txt, zapisane su razne velicine. Ekstrahovati iz date tekstualne datoteke samo 7 osnovnih SI jedinica. U svakom redu u datoteci nalazi se samo jedna velicina!

Primer:

m
kg
J
A



Uradih ovako nesto...ali nece da valja tj. nece da radi:




#include<stdio.h>
#include<string.h>

int main()
{
FILE* inFile;

inFile = fopen("mere.txt","r");


char c;
while (c = fgetc(inFile))
{
cout << c;
if (c=='kg' || c=='A' || c=='m')
{
printf("%s", c);
}
}
return 0;

}
 
A kako 'kg' može da se tretira kao char?
 
Pa ne moze jer su to dva karaktera... mislim da bi trebao da kazes programu da kupi karaktere sve dok ne dodje do kraja linije i onda da uporedjujes (malo sam zaboravio C ali znam da ima neki takav fazon).
 
ok, hvala ;)

tema moze da ide u /closed ili da se brise
 
Pored toga što ne postoji znakovna konstanta 'kg', već samo string "kg", pa je zato ne možeš u programu poredti sa tipom char, imaš još nekoliko većih propusta:

1.Ako se radi o C programu , ne možeš koristiti cout- to je objekat koji pripada C++! ANSI C ima putchar() i printf() za standardni izlaz.
2.Funkcija printf() se ne koristi za prikazivanje tipa char, za to služi putchar() /* printf("%s", c); - ne ide tako*/
3.prototip funkcije getc vraća tip int.Kompajler će možda kovertovati int u char (uz upozorenje), ali nepisano pravilo u ANSI C -u glasi da se za smeštanje znakova koristi tip INT a ne CHAR iz razloga što tip char ne može da "primi" simboličku konstantu EOF (kraj datoteke) koja je obično -1.
4.U ANSI C-u ne postoju f-ja fgetc(), postoji samo getc(FILE * ) koja vraća naredni znak datoteke (verovatno si mislio na fgets() - pročitaj pod 8)
5.while petlja ti nije dobra tj. nemaš uslov za kraj datoteke while ((c = getc(inFile) !=EOF). Sada bi trebalo da razumeš zašto je trebalo int c, ane char c.
6.nisi pozvao fclose(), i raskinuo vezu sa mere.txt.
7.SI jedinica ima više, ne samo tri.
8.Ovo se odnosi na logiku rešavanja problema.Ovaj program će raditi ispravno ukoliko su jedinice reprezentovane jednim slovom(a nisu).Trebalo bi koristiti funkciju fgets() koja čita jedan red datoteke mere.txt(sve do '\n').

Ovo pišem krajnje dobronamerno da bi ti ukazao da program ima ozbiljne mane, pored c=='kg' !
 
Poslednja izmena:
Vrh Dno