Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. 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: [C] Nevim jak napsat ukol (easy)

Aktivity
Avatar
honza.b4
Člen
Avatar
honza.b4:2.1.2014 13:45

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:2.1.2014 13:47

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
Tvůrce
Avatar
Odpovídá na honza.b4
Petr Nymsa:2.1.2014 13:49

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.1.2014 13:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
phoer
Člen
Avatar
phoer:2.1.2014 13:49

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
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:2.1.2014 13:51

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:2.1.2014 14:00

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
Tvůrce
Avatar
Odpovídá na honza.b4
Kit:2.1.2014 14:03

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
Odpovídá na honza.b4
Drahomír Hanák:2.1.2014 14:04

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:2.1.2014 14:04

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:2.1.2014 14:06

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
Tvůrce
Avatar
Odpovídá na honza.b4
Kit:2.1.2014 14:07

Š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
Odpovídá na honza.b4
Drahomír Hanák:2.1.2014 14:13

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:2.1.2014 14:19

nerozumim tomu, proc tam je

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

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
Odpovídá na Petr Nymsa
Drahomír Hanák:2.1.2014 14:35

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
Tvůrce
Avatar
Odpovídá na Drahomír Hanák
Petr Nymsa:2.1.2014 14:37

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
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Kit:2.1.2014 14:38

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
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ý:2.1.2014 14:40

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.