Afişează mesaje
|
|
Pagini: [1] 2
|
|
1
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Ajutor program inserare '?' dupa fiecare aparitie a unui cuvant intrun sir
|
: Iunie 21, 2014, 23:17:12
|
nu faci bine compararea int main() { int i,n,rez,ok=1,j,w,pi=0,poz; char s[100],v[]="aeiou",s2[16]; cin.get(s,100); cin.get(); cin.get(s2,16); n=strlen(s)-1; for(i=0;i<=n;i++)//parcurg sirul { if(s[i]!=' ')//parcurg sirul pana intalnesc spatiu { j=0; while(s[i]==s2[j]) {i++; j++; } if(j==strlen(s2)) { inserare(s,n,'?',i); i=i++;//stiind ca exista un singur spatiu intre fiecare cuvant sar 2 pozitii si ajung pe prima litera a cuvantului urmator } } else if(ok==1)//memorez prima litera a cuvantului { pi=i; ok=0; } } for(i=0;i<=n;i++) cout<<s[i]; return 0; }
|
|
|
|
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Problema sir de numere
|
: Iunie 18, 2014, 11:33:35
|
Nu trebuie neaparat sa memorezi toate numerele intr-un vector si apoi sa cauti. int main() { ifstream f("BAC.txt"); int penultim,ultim,nr,poz_p=0,poz_u=0,poz=0; f>>nr; while(nr%2==0) { //cauta primul numar impar f>>nr; poz++; } penultim=nr; // memoreaza primul numar impar poz_p=poz; // memoreaza pozitia f>>nr; poz++; while(nr%2==0) { // cauta al doilea numar impar f>>nr; poz++; } ultim=nr; // memoreaza al doilea numar impar poz_u=poz; // memoreaza pozitia for( ;poz<10000;poz++) //cauta dupa alte numere impare { f>>nr; if(nr%2==1) {penultim=ultim; poz_p=poz_u; poz_u=poz; ultim=nr; } } cout<<penultim<<" "<<poz_p; }
|
|
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Sudoku
|
: Mai 13, 2014, 11:42:13
|
|
Nu stiu cat de bine merge ideea ta dar am vazut ca mai folosesti de doua ori for(i=...),for(j=...) in for-urile care folosesc tot i si j. cand iasa din for-urile alea doua, i si j au valoare 10 si nu mai intra in for-urile mari.
si nu cred ca e buna ideea fiindca nu tot timpul primul numar care intra intr-o casuta ii bun...
|
|
|
|
|
8
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: De la x la y
|
: Martie 18, 2014, 20:50:52
|
nu imi prea place metoda folosita de time dar uite codul: #include <iostream>
using namespace std;
int main(){ int o,m,s,o2,m2,s2,p2,p,d,nr=0,nr2=0,g=0,g1=0; cin>>o>>m>>s>>o2>>m2>>s2; o=o*3600; m=m*60; p=o+m+s; o2=o2*3600; m2=m2*60; p2=o2+m2+s2; if(p2>p){ d=p2-p; if(d>=60){ while(d!=0){ d--; nr++; if(nr==60){//asa se verifica o egalitate g++; nr=0; } } } if(g>=60){ while(g!=0){ g--; nr2++; if(nr2==60){//asa se verifica o egalitate g1++; nr2=0; //resetezi minutele } } } else g1=0;
} cout<<g1<<" "<<nr2<<" "<<nr; return 0; }
Incearca pe viitor sa ai mai organizat codul fiindca la felul cum l-ai scris tu e o durere de cap ca sa inteleaga cineva ce faci. uite alta metoda de a transforma secundele in ore si minute: #include <iostream>
using namespace std;
int main() { int o,m,s,o2,m2,s2,p2,p,d,nr=0,nr2=0,g=0,g1=0; cin>>o>>m>>s>>o2>>m2>>s2; o=o*3600; m=m*60; p=o+m+s; o2=o2*3600; m2=m2*60; p2=o2+m2+s2; if(p2>p){ d=p2-p; g1=d/3600; d=d%3600; g=d/60; d=d%60; } cout<<g1<<" "<<g<<" "<<d; return 0; }
|
|
|
|
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Metoda backtracking
|
: Februarie 25, 2014, 22:36:17
|
mi-e greu sa imi dau seama cum faci... uite o varianta mai simpla: #include<iostream> #include<math.h> using namespace std; long n,x[25],v[4];
int prim(long long nr) { long d; for(d=2;d<sqrt(nr);d++) if(nr%d==0) return 0; return 1; } int sol (int k) { long long nr=0; int i; nr=x[1]; for(i=2;i<=k;i++) {nr*=10; nr+=x[i]; } if(prim(nr)) return 1; return 0; } void print (int i) { int l; for (l = 1; l <= i; l++) cout<<x[l]; cout<<endl;
} void back (int k) { int j; for (j = 1; j <= 3; j++) { x[k] = v[j]; if(k==n) {if(sol(k)) { print(k); }} else back(k+1); } } int main() { cout<<"n=";cin>>n; cout<<"c1=";cin>>v[1]; cout<<"c2=";cin>>v[2]; cout<<"c3=";cin>>v[3];
back(1); return 0; }
|
|
|
|
|
10
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Grafica in C++
|
: Februarie 18, 2014, 22:30:51
|
am incercat eu mai demult sa fac snake in C, uite ce mi-a iesit: #include <windows.h> #include <conio.h> #include <stdlib.h> char *a[23]; int s[2][200],head,tail; int i,j,direction=2,score=0,diff;
void print() { for(i=0;i<22;i++) printf("%s\n",a[i]); printf("SCORE: %i",score);
} void init_edges() { for(i=0;i<22;i++) a[i][0]=a[i][78]='*'; for(j=0;j<78;j++) a[0][j]=a[21][j]='*'; } void init() { for(i=0;i<22;i++){ for(j=0;j<78;j++) a[i][j]=' '; a[i][79]='\0'; } } int main(){ int ch1, ch2, t, l=10,k=10,ok=1,tl=10,tk=5,fx,fy,fok=1; for(i=0;i<22;i++) a[i]=(char *)malloc(79*sizeof(char)); init(); init_edges(); head=0; for(i=tk+1;i<=k;i++){ a[l][i]='o'; s[0][head]=l; s[1][head]=i; head++; } tail=0; srand(time(NULL)); fx = rand()%21; fy = rand()%77; ok=1; while(fx==0||fy==0||a[fx][fy]!=' '){ fx = rand()%21; fy = rand()%77; } a[fx][fy]='@'; printf("Select difficulty:\n1-EASY\n2-MEDIUM\n3-HARD\n4-VERRY HARD\n5-EXTREME\n"); scanf("%i",&diff); diff=200/(diff*diff); while(ok){ while (!kbhit()){ Sleep(diff); system("cls"); print(); a[l][k]='o'; if(direction==1){ l--; if(l==0) ok=0; } else if(direction==2){ k++; if(k==78) ok=0; } else if(direction==3){ l++; if(l==21) ok=0; } else if(direction==4){ k--; if(k==0) ok=0; } if(a[l][k]=='o') ok=0; else if(a[l][k]=='@'){ fx = rand()%21; fy = rand()%77; ok=1; while(fx<2||fy<2||a[fx][fy]!=' '){ fx = rand()%20; fy = rand()%76; } a[fx][fy]='@'; score++; } else{ a[s[0][tail]][s[1][tail]]=' '; tail++; if(tail==199) tail=0; } a[l][k]='x'; s[0][head]=l; s[1][head]=k; head++; if(head==199) head=0; if(ok==0) break; } if(ok){ ch1=getch(); ch2 = 0; if (ch1 == 0xE0&&ok) { ch2 = getch(); switch(ch2){ case 72: {if(direction!=3)direction=1;//printf("UP\n"); break;} case 80: {if(direction!=1)direction=3;//printf("DOWN\n"); break;} case 75: {if(direction!=2)direction=4;//printf("LEFT\n"); break;} case 77: {if(direction!=4)direction=2;//printf("RIGHT\n"); break;} default:break; } } } } printf("\nGAME OVER!"); getchar(); getchar(); return 0; }
|
|
|
|
|
14
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Problema algoritm
|
: Ianuarie 06, 2014, 18:39:01
|
|
secventa poate contine numerele 10,x,y,z, cu x>=10,y>=10,z>=10, sau orice combinatie de aceste numere daca am inteles bine problema
|
|
|
|
|
17
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Verificare existenta nr in sir.
|
: Decembrie 09, 2013, 14:10:22
|
Pseudocodul genereaza sirul 1,3,5,11,21,43,... , deci de la tastatura se citeste doar n, care ii lungimea sirului, x si y, numerele care trebuie cautate in sir. Se poate verifica si fara a memora sirul intr-un vector. int main() { int n,A,B,C,x,y,i; int ok=0; cin>>n; cin>>x>>y; A=1; B=3; if(x==A||x==B) ok++; if(y==A||y==B) ok++; for(i=1;i<=n-2;i++){ C=A*2+B; A=B; B=C; if(x==B) ok++; if(y==B) ok++; } if(ok==2) cout<<"DA"; else cout<<"NU";
return 0; }
|
|
|
|
|
19
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Triunghiul numerelor,sa se afle pozitia numarului citit.
|
: Decembrie 05, 2013, 12:23:59
|
|
Salut,
Daca observi ultimul numar de pe fiecare linie n e suma de la 1 pana la n, suma se poate afla asa s=n(n+1)/2. Sa zicem ca x este numarul citit deci el se afla pe linia n daca n(n+1)/2=x adica n(n+1)-2x=0. Din aceasta ecuatie necunoscuta este n deci o sa ai doua solutii n1=(sqrt(1+8x)-1)/2 si n2=(-sqrt(1+8x)-1)/2, a doua este negativa deci nu este buna. n trebuie sa fie intreg deci scrii n=(int)(sqrt(1+8x)-1)/2. Rotunjirea se face la n-1 deci mai trebuie sa adaugi 1 la n, adica n=(int)(sqrt(1+8x)-1)/2+1. Mai este o problema cand radicalul poate fi numar intreg deci nu se mai face rotunjirea la n-1, ca sa rezolvi si asta verifici daca (int)sqrt(1+8*n)==sqrt(1+8*n) si daca e adevarata scazi 1 din n. Mai ramane sa afisezi n.
Sper ca ai inteles. Codul il scrii si tu ca nu e mult.
|
|
|
|
|
21
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Structura elev
|
: Noiembrie 08, 2013, 22:27:27
|
Ca sa memorezi datele de la mai multi elevi, trebuie ca variabila elev sa fie de tablou unidimensoinal. Asa ar trebui sa mearga: #include <iostream> using namespace std; struct { char nume[20],prenume[20]; int clasa,varsta;}elev[20]; int main() {int i,n; cin>>n; for(i=0;i<n;i++){ cout<<"nume elev"; cin>>elev[i].nume; cout<<"prenume elev"; cin>>elev[i].prenume; cout<<"clasa elev"; cin>>elev[i].clasa; cout<<"varsta"; cin>>elev[i].varsta;} for(i=0;i<n;i++) cout<<elev[i].nume<<endl<<elev[i].prenume<<endl<<elev[i].clasa<<endl<<elev[i].varsta<<endl;}
|
|
|
|
|
22
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Tablou unidimensional
|
: Noiembrie 08, 2013, 22:20:04
|
#include <iostream> using namespace std; int main() { int M[100],N[100],n,i; int ok=0; cin>>n; for(i=0;i<n;i++) {cout<<"M["<<i<<"]="; cin>>M[i];} for(i=0;i<n;i++) {cout<<"N["<<i<<"]="; cin>>N[i];} for(i=0;i<n;i++) if(M[i]<=N[i]) ok++; //numara daca toate elementele din M sunt mai mari ca elementele din N if(ok==n) cout<<"M<N"<<endl; else if(ok==0) cout<<"M>N"<<endl; }
|
|
|
|
|