Avatar
honza.b4
Člen
Avatar
honza.b4:

Ahojte vsichni. Ucim se C z jedne knihy. Ted tam mam na konci kapitoly ukoly. Vsechny sem vyresil az na posledni dva. Premyslel sem nad tim, ale opravdu nevim.

Prvni ukol:

Napiste program, ktery vypise hodnotu EOF

Druhy ukol:

Napiste program pro kopirovani vstupu na vystup, nahrazujici retezce jedne nebo nekolika mezer jednou mezerou

Vim jak okopirovat vstup na vystup, ale nevim jak nahradit ty retezce.

#include <stdio.h>
int main(void){
int z;

while((z = getchar()) != EOF){
putchar(z);
}
return 0;
}

diky za pomoc

 
Odpovědět 2.1.2014 13:45
Avatar
Lotr Intelektuál
Neregistrovaný
Avatar
Lotr Intelektuál:

Jen trochu od věci: Není se lepší učit C# nebo Javu?
C je pro začátečníka celkem těžké a už se moc nepoužívá.
Jenom můj názor :)

 
Nahoru Odpovědět 2.1.2014 13:47
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na honza.b4
Petr Nymsa:

Pokud tě někdo ve škole nenutí učit se C začni se učit jazyk, který je moderní , má vyšší uplatnění a mnohem lépe se učí -> například C# či Java

Nahoru Odpovědět  -2 2.1.2014 13:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
phoer
Člen
Avatar
phoer:

Nepíšeš k tématu, je to na osobě zda-li bude začínat programovát na C nebo na C#.

Editováno 2.1.2014 13:49
Nahoru Odpovědět  +3 2.1.2014 13:49
„Co slyším, to zapomenu. Co vidím, si pamatuji. Co si vyzkouším, tomu rozumím.“ - Konfucius
Avatar
Lotr Intelektuál
Neregistrovaný
Avatar
Lotr Intelektuál:

Ale pro tu osobu bude to C celkem zbytečné.. Souhlasím se Zirkem

 
Nahoru Odpovědět 2.1.2014 13:51
Avatar
honza.b4
Člen
Avatar
honza.b4:

Tak C zase tak zbytecne neni. Ted jsem na ZS a jednou bych se chtel dostat na matematickou olympiadu P a potom ziskat 50%+ bodu v KSP. A v obou pripadech se pouziva C/C++

btw. pouzivam Arch linux a v linuxu je ponekud neprakticke programovat pro platformu .NET

Editováno 2.1.2014 14:03
 
Nahoru Odpovědět 2.1.2014 14:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na honza.b4
Kit:

Pro matematiku se hodí lépe Fortran než C, ale když organizátoři rozhodli, že bude C...

Nahoru Odpovědět 2.1.2014 14:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na honza.b4
Drahomír Hanák:

První úkol je snadný. Prostě vypíšeš hodnotu EOF pomocí printf.
Druhý už skoro máš. Ulož si předchozí znak a když to bude mezera, tak aktuální znak prostě vynech.

 
Nahoru Odpovědět 2.1.2014 14:04
Avatar
Lotr Intelektuál
Neregistrovaný
Avatar
Lotr Intelektuál:

Aha.. takže ti to vnutili.. V budoucnu: Když linux, tak Java-jasná volba

 
Nahoru Odpovědět 2.1.2014 14:04
Avatar
honza.b4
Člen
Avatar
Odpovídá na Drahomír Hanák
honza.b4:

Ulož si předchozí znak a když to bude mezera, tak aktuální znak prostě vynech.

a to by vypadalo jak?

 
Nahoru Odpovědět 2.1.2014 14:06
Avatar
Kit
Redaktor
Avatar
Odpovídá na honza.b4
Kit:

Škoda, že nemůžeš použít libovolný jazyk:

sed -e 's/  */ /g'
Nahoru Odpovědět 2.1.2014 14:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na honza.b4
Drahomír Hanák:

Myslím, že bys to mohl dát dohromady sám :) Je to jedna proměnná a podmínka navíc. Být tebou povíval bych se zpátky v knize a trochu si to znovu v klidu pročetl.

#include <stdio.h>
 int main(void){
 int z, prev = 0;

 while((z = getchar()) != EOF){
   if (prev != ' ') putchar(z);
   prev = z;
 }
 return 0;
 }
 
Nahoru Odpovědět 2.1.2014 14:13
Avatar
honza.b4
Člen
Avatar
Odpovídá na Drahomír Hanák
honza.b4:

nerozumim tomu, proc tam je

prev = z;
 
Nahoru Odpovědět 2.1.2014 14:19
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Drahomír Hanák
Petr Nymsa:

Sice C nijak neznám, ale ono int může nabýtvat hodnoty ' ' ? :O

Nahoru Odpovědět 2.1.2014 14:26
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
Drahomír Hanák:

V tom není problém. Znaky jsou přece taky čísla (číselný kód z ASCII tabulky), ale stejně to mám špatně. Mělo by to být spíš něco takového

#include <stdio.h>
int main(void){
 int z, prev = 0;

 while((z = getchar()) != EOF){
   if (z == ' ' && prev == ' ') continue;
   putchar(z);
   prev = z;
 }
 return 0;
}

honza.b4 Uložíš aktuální znak do nové proměnné, aby si ho mohl porovnávat v dalším chodu cyklu while. Raději si přečti víc o C třeba i tady na devbooku.

 
Nahoru Odpovědět 2.1.2014 14:35
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Drahomír Hanák
Petr Nymsa:

No jsem zvyklý ze C# že porovnávat vlastně int s char nelze. Ale je jasné, že každý znak dle ASCII je číslo. Troch mě to zmátlo

Nahoru Odpovědět 2.1.2014 14:37
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

Céčko je takový podivný jazyk, skutečně je to v pořádku. Typ int se v něm používá i místo boolean.

Nahoru Odpovědět  +1 2.1.2014 14:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Petr Nymsa
Michael Olšavský:

V Céčku je int téměř vše...

EDIT: Kit to napsal za mě :)

Editováno 2.1.2014 14:40
 
Nahoru Odpovědět 2.1.2014 14:40
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 18 zpráv z 18.