Afişează mesaje
|
Pagini: [1]
|
2
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Carti
|
: August 04, 2010, 02:51:09
|
Eu cred ca din mesajul meu intelegi ce am vrut sa scriu
Gandeste-te la o limba vorbita ca la un standard. In cazul nostru, limba romana este un standard web: fiecare l-a implementat cum l-a dus capul, si uite cam cum a ajuns programarea web. Dar ignorati ce e scris mai sus, mi-am adus aminte de asta si m-am gandit s-o postez.
|
|
|
3
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Carti
|
: Iulie 16, 2010, 18:26:47
|
E amuzant ca doua din patru raspunsuri au greseli gramaticale, dar se comenteaza pe tema asta. Pentru C, vezi C Programming: A Modern Approach. E in engleza, nu stiu daca se gaseste si in romana/Romania, dar este printre cele mai bune carti de C. Vezi, totusi, ca informatica nu se rezuma la C/C++, deci dupa ce inveti sa nu mai faci greseli puerile vei vrea sa cauti si carti despre algoritmi, daca ce faci la scoala nu te multumeste.
|
|
|
4
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Ce-am gresit?
|
: Martie 07, 2010, 19:28:07
|
Nu văd using namespace std; pe nicăieri. Trebuie specificat și asta, ideal după ce incluzi headerele. Poate în versiunea în limba română au luat-o pe scurtătură, însă eu am cartea în engleză, iar linia asta apare. while-ul acela nu este pus degeaba. Face programul să nu se termine după ce ai introdus primul număr și ți-a dat output-ul, ci atunci când scrii 0. Fără el, îi dai, să zicem, că vrei 3 cărți, el ți le arată și iese. Cu el, vei mai putea cere alte 4 cărți și ți le va da. Și tot așa până scrii 0, iar programul își termină execuția. Iar ca specificații ce nu apar în carte, folosește header-ele specifice C++ fără .h-ul de la sfârșit (ex.: <iostream.h> devine <iostream>), iar cele din C tot fără .h, dar cu un c la început ( <math.h> devine <cmath>), pentru a evita warning-urile de tip " deprecated/antique header". Și vezi că poți defini și inițializa funcția "în același timp". De exemplu, în loc să faci ca în carte (sursa 1), poți face ca în sursa a doua: ... int o_functie(int n); ... int main() { o_functie(2); ... return 0; } ... int o_functie(int n) { cout << n++; }
int o_functie(int n) { cout << n++; }
int main() { o_functie(2); ... return 0; } ...
Revenind la topic, mie codul ăsta îmi compilează și merge după cum am spus mai sus, fără bucla infinită ( while(1)). Am adăugat using namespace std și am înlocuit tip[r] și numar cu tip și numar[r]. Greșeala era de lingvistică  #include<iostream> #include<cstdlib> #include<ctime> #include<cmath> using namespace std; int aiurea(int n); void trage ();
char *tip[4]={"inima", "trefla", "romb", "frunza"}; char *numar[13]={"as", "doi", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua", "zece", "valet", "dama", "popa"};
int main(){ int n,i; srand(time(NULL)); cout<<"Introduceti numarul de carti de tras";cin>>n; for(i=1;i<=n;i++) trage(); return 0;} void trage(){ int r,s; r=aiurea(13); s=aiurea(4); cout<<tip[s]<<" de "<<numar[r]<<endl;} int aiurea(int n){ return rand()%n;}
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra
|
: August 12, 2009, 13:23:30
|
Ideea e că nu pot învăța din sursele altora, pentru că, oricât m-aș uita la un exemplu, nu mă pot concentra, și mă gândesc la ce topping pun pe pizza  Prefer ceva gen pseudo-cod, să simt că fac și eu ceva. Mulțumesc de ajutor, voi căuta să îmi extind cunoștințele pe cât posibil înainte de a încerca probleme cu un nivel ridicat de dificultate.
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra
|
: August 12, 2009, 09:13:27
|
Ah, OK! Acum înțeleg. Mulțumesc mult, voi încerca să îl rescriu.Am încercat să îl rescriu, dar tot 0 puncte iau. Am testat doar cu numerele impare din Exemplu, deci nu mai poate fi vorba de aceeași eroare, dă calumea la mine, dar la evaluator nu. Asta e sursa modificată. #include<fstream> using namespace std;
int putere(int cifra) { int numar = 1; for(int i = 0; i < cifra; i++) { numar *= cifra; }
return numar; }
int main() {
ofstream fout("cifra.out"); ifstream fin("cifra.in");
int cifra, d, t; fin >> t; for(d = 0; d < t; d++) { int z = 0; fin >> cifra; for(int i = 1; i <= cifra; i++) { z += putere(i); z %= 10; } fout << z << endl; }
return 0; }
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra
|
: August 12, 2009, 09:00:33
|
Păi nu asta trebuie făcut? Uite, aici e problema. Și eu asta fac. Ultima cifră a sumei loop flag-ului curent + cele precedente. Ideea e că unul din noi nu a înțeles ceva. Cu sursa postată, asta obțin eu dacă îl testez local, pe baza Exemplului, și e corect, pentru că asta e dat și pe pagina problemei. Dacă îmi mai poate da cineva test cases-uri să verific, aș fi recunoscător...
|
|
|
8
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra
|
: August 12, 2009, 08:19:46
|
Eu nu văd nimic modificat în prima sursă De fapt, văd modificat scope-ul, dar cum al meu e global față de FOR, nu cred că e relevant, iar în a doua, dacă scriu așa cum scrii tu, nu ar trebui să scrie în fișier Z-ul final, deci, în cazul Exemplului, 3143?
Am văzut ce s-a scris, însă nu înțeleg de ce trebuie luate ultimele două cifre, și care e treaba cu cifrele acelea din array. Ultimele două cifre, cică dau ca rest la împărțirea cu patru ultima cifră. De ce trebuie să împărțim prin patru pentru a o afla?
Ideea e că mie îmi merge cu Exemplul, și alte trei teste mici făcute de mine. L-am pus să îmi arate ce face la fiecare pas din FOR, și e corect, atât timp cât numărul poate fi depozitat într-un INT.
|
|
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra
|
: August 12, 2009, 01:07:44
|
Am si eu o problema. Am facut urmatoarea sursa, am incercat cu valorile din Exemplu, si a mers. Cand o trimit, insa, primesc 0 puncte. #include<fstream> using namespace std;
int putere(int cifra) { int numar = 1; for(int i = 0; i < cifra; i++) { numar *= cifra; }
return numar; }
int main() {
ofstream fout("cifra.out"); ifstream fin("cifra.in");
int cifra, d, t; int z = 0; fin >> t; for(d = 0; d < t; d++) { fin >> cifra; z += putere(cifra); fout << z%10 << endl; }
return 0; }
Edit: Cu ce numere testeaza evaluatorul? Stiam ca int-ul nu poate trece de 2 milioane. Toate testele trec de 2 milioane, sau mai exista o problema la sursa? Ar ajuta sa-l fac unsigned long int, sau nu pot decat cu un vector? Scuzati-mi lipsa de cunostinte, insa acestea se rezuma la primele 3 capitole din "Thinking in C++". La scoala nu am facut informatica anul asta, iar intr-a cincea/a sasea abia ne preda despre main(), int main(), sau void main(), ce scriam fiind la alegerea noastra...
|
|
|
|