Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Konvertovanie z C++ do C

Aktivity
Avatar
enigma85
Člen
Avatar
enigma85:6.4.2020 21:16

Potrebujem tento program dat do C jazyka. Za kazdu radu dakujem
#include <iostream.h>
#include <fstream.h>

int JeZena(long c)
{
c /= 1000; // odstranime posledne 3 cislice
c %= 10; // z toho, co zostalo, chceme poslednu
return c >= 5; // ak plati, je to zena, inak muz
}

void VypisDatum(long c)
{
cout << c % 100 << ". ";
c /= 100;
cout << c % 50 << ". ";
c /= 100;
c += (c < 10) ? 2000 : 1900;
cout << c << endl;
}

void main()
{
ifstream fin;
fin.open("vstup­.txt");

long datum;
fin.setf(ios::dec); // aby cislo zacinajuce nulou nepokladal za oktalove
fin >> datum;
while (datum)
{
// ked uz citame zo suboru, nech vidime aj povodne cislo
if (datum < 100000) cout << 0; // cisla zacinajuce nulou
cout << datum << " ";

// a samotny vysledok
if (JeZena(datum)) cout << "- zena, narodena ";
else cout << "- muz, narodeny ";
VypisDatum(datum);

fin >> datum;
}

fin.close();
}

Zkusil jsem: namiesto cout skusam davat scanf

Chci docílit: Prekonvertovat program z C++ do C

 
Odpovědět
6.4.2020 21:16
Avatar
DarkCoder
Člen
Avatar
Odpovídá na enigma85
DarkCoder:6.4.2020 22:10

Zde máš několik rad:

  • V programu používáš tradiční styl C++ pro vkládání knihoven. Moderní styl neobsahuje koncovku .h. V C se pro práci se soubory a IO používá hlavičkový soubor stdio.h.
  • Cout je předefinovaný datový proud který se používá spolu s výstupním operátorem <<. V C se pro formátovaný výstup do konzole používá funkce printf(), nikoli scanf(), která se používá pro formátovaný vstup.
  • Funkce main() by měla vracet hodnotu volajícímu procesu (datový typ int) a použít klíčové slovo void v sekci parametrů, pokud nepřebírá žádné argumenty z příkazového řádku. Na konci vracet 0 pomocí return. Nulová hodnota indikuje korektní ukončení programu.
int main(void) {
        // ...
        return 0;
}
  • Pro práci se soubory je třeba si deklarovat ukazatel na soubor. Dokud ukazatel neukazuje na soubor, je dobrým zvykem nastavit jeho hodnotu na NULL.
FILE *fp = NULL;
  • Otevření souboru se provádí pomocí funkce fopen(), uzavření souboru pomocí funkce fclose(). Je třeba vždy testovat, zda otevření bylo úspěšné.
  • Pro čtení záznamů ze souboru se používá funkce fgets(). Na načteném řetězci lze snadno provádět patřičnou analýzu a kontrolu.
Editováno 6.4.2020 22:12
Nahoru Odpovědět
6.4.2020 22:10
"Chceš-li předávat své znalosti, měj kvalitní podklady."
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
enigma85
Člen
Avatar
Odpovídá na DarkCoder
enigma85:7.4.2020 14:49

dakujem

 
Nahoru Odpovědět
7.4.2020 14:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.