Mam taki kod:
int a,b;
cin>>a>>b;
cout << a+b;
chciałbym zastąpić ten kod, kodem z printf i scanf. Ale, tak aby dodawanie także było w printf. A potem całe printf wsadzić w scanf. Wiem że da się to zrobić, tylko nie umiem wymyślić jak.
Mam taki kod:
int a,b;
cin>>a>>b;
cout << a+b;
chciałbym zastąpić ten kod, kodem z printf i scanf. Ale, tak aby dodawanie także było w printf. A potem całe printf wsadzić w scanf. Wiem że da się to zrobić, tylko nie umiem wymyślić jak.
scanf("%d%d", &a, &b);
printf("%d", a+b);
?
@up - spację ci zjadło.
[losowa nazwa] napisał(a)
scanf("%d%d", &a, &b);
printf("%d", a+b);
?
Tak,
połowa jest.
teraz wsadzić scanf do printf żeby to jeszcze skrócić
nedase :) A przynajmniej nie bez nieładnych prohaxów.
No to jak ma to wyglądać z prohaxami?
printf("%d",scanf("%d",&a));
Nie bo tak ci wyświetli wartość zwracaną przez scanf, która jest flagą błędu o ile wystąpi.
czyli ogólnie której się tego napisać nie da?
Da się:
int a = 0, b = 0;
printf("%d %d", (scanf("%d %d"), a), b); // o ile dobrze pamiętam to tak, ale broń cię przed takimi wynalazkami.
printf("%d\n",(scanf("%d",&a),(a+a*a)/2));
no i krócej niż wcześniej :D
pytanie jeszcze czy da się to jakoś skrócić bardziej.
Ale po co?
No bo chce napisać jak najkrótszy kod.
Obecna wersja tego co udało mi się skroić to:
#include<stdio.h>
int main(){for(int i=10,a;i--&&printf("%d\n",(scanf("%d",&a),(a+a*a)/2)););}
@ne0: bierzesz udzial w jakims konkursie na najbardziej poryty kod?
bo nie za bardzo rozumiem tego fetyszu - po co spedzac caly dzien nad jedna linijka kodu?
Nie w konkursie. Zakład z nauczycielem :)
Chcesz pisać krótki kod? Wybierz inny język :] Co dokładnie chcesz napisać?
Dostajesz dokładnie 10 liczb. Kazda w nowej linii.
Dla kazdej z nich masz obliczyc sume od 1 do tej liczby.
Czyli jak na wejsciu dostajesz 4, to masz wyliczyc 4+3+2+1. Jak dostaniesz 7 to 7+6+5+4+3+2+1 i wypisac na ekran.
Inny tzn jaki by się najlepiej do tego nadawał?
Miałem na myśli jakiś język funkcyjny/deklaratywny, ale zadanie jest chyba za proste żeby mógł rozwinąć skrzydła. Napiszę za chwilę jak wpadnę na jakiś pomysł.
Może perl...
Wydaje mi się że coś można zrobić z tym wzorem. Skróciłem go już i tak bardzo dobrze, ale może da się to jeszcze jakoś zrobić. W całym programie zmienna "a" pojawia się aż 5 razy...
Ahahahaha, befunge jest zaje****!
Program wykonujący to zadanie dla ciebie:
56+> 1- :#v_@
^./2+*::&<
:]
Hm, a jak dalej chce mieć to w
C, C++ albo c99 strict?
Lubię w sumie takie zabawy, więc... Z wzorem nic nie zrobisz. Moja (nieco krótsza propozycja):
#include<stdio.h>
/* twoja wersja:
int main(){for(int i=10,a;i--&&printf("%d\n",(scanf("%d",&a),(a+a*a)/2)););}
*/
int main(){int i=9,a;while(scanf("%d",&a),printf("%d\n",(a+a*a)/2),i--);}
Pewnie są jeszcze jakieś sztuczki które skrócą kod...
No i super: 91 znaków. Teraz pytanie jak zejść np. do 60 :D
Obawiam się w 60 że się nie da.
Lista słówek kluczowych bez których nie dasz po prostu rady w C tego napisać - tylko wzór, zmienna, pętla, scanf i printf. Bez absolutnie żadnej logiki - 70 znaków:
#include<stdio.h>
int i= main(){}while(),(a+a*a)/2 scanf"%d"printf"%d\n"
Ale nie wpadaj w pesymizm, wywal po prostu int przed main i już 4 znaki lepiej :)
#include<stdio.h>
/*
int main(){for(int i=10,a;i--&&printf("%d\n",(scanf("%d",&a),(a+a*a)/2)););}
*/
main(){int i=9,a;while(scanf("%d",&a),printf("%d\n",(a+a*a)/2),i--);}
No to mamy 87.
MSM napisał(a)
Obawiam się w 60 że się nie da.
hmm, do 53 mozna zjechac w tym zadania, na razie mi sie udalo do 55 z wzorem 8 znakowym, ale podobno mozna jeszcze go skrocic
A możesz podać kod?
ne0 napisał(a)
A możesz podać kod?
nie
A w ogóle skąd wiesz że można zjechać do 53 a nie np. 52?
Bo napisać to ja sobie wiele rzeczy mogę ;)
ne0 napisał(a)
A w ogóle skąd wiesz że można zjechać do 53 a nie np. 52?
Bo napisać to ja sobie wiele rzeczy mogę ;)
Z tego samego zrodla co i Ty masz wymog napisania tego w C/C++ - spoj.pl.
Kolego ja nie mam żadnego wymogu. Przeczytaj od początku skąd mam to zadanie, będziesz wiedział. Spoj.pl? Hm wygląda jak podróba opss.safo.biz.
Daj link do tego konkretnie zadania.