Afişează mesaje
Pagini: [1] 2
1  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Afisare din subprogram : Martie 15, 2015, 21:54:03
sa zicem ca avem un main foarte foarte simplu

int main() { long n; cin>>n; Operatii(n); }

Si evident un subprogram numit operatii:

long Operatii(long n)
{
bla bla bla
bla bla
bla bla bla
}

in subprogramul asta trebuie sa umplem un vector cu niste valori efectuand niste operatii cu n.Uite ca avem vectorul umplut ,valorile sunt corecte doar ca trebuie afisate pe ecran.Si acum intrebarea care ma macina : cum pot fi afisate pe ecran?apelare recursiva?return .. in for?cout... in for? declarare de tip void si ...?
2  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: OJI - Text : Martie 01, 2015, 11:37:50
imi traduce cineva codul in C++/C va rog?
3  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: OJI - Text : Februarie 28, 2015, 23:08:30
e doar varianta .pas ,eu vreau C,C++ si nu stiu cum sa traduc in limbaju pe care il vreau
4  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / OJI - Text : Februarie 28, 2015, 17:25:24
Cerinţă
Pentru un text dat, se cere să se afişeze numărul de cuvinte din text, apoi numărul minim de cuvinte ce pot fi eliminate astfel încât în textul rămas orice cuvânt (cu excepţia ultimului) să se termine cu aceeaşi literă cu care începe cuvântul următor, iar în final să se afişeze cuvintele din text rămase după eliminare, fiecare cuvant fiind afişat pe câte o linie.

Date de intrare
Fişierul text.in conţine un text scris pe mai multe linii. Pe fiecare linie se află cuvinte formate din litere mici ale alfabetului latin. Cuvintele sunt despărţite între ele prin exact câte un spaţiu.

Date de iesire
Fişierul text.out va conţine pe primele doua linii două numerele x şi y, unde x va fi numărul de cuvinte din text, iar y numărul minim de cuvinte ce trebuie eliminate. Pe liniile următoare se vor afişa, în ordine, cuvintele rămase după eliminarea celor y cuvinte, câte un cuvant pe o linie.

Restricţii şi precizări
•   Numărul de cuvinte din text este maximum 20000.
•   Lungimea maximă a unui cuvânt este 20.
•   Fiecare linie de text din fişierul de intrare are cel mult 200 de caractere.
•   În fişier pot exista rânduri goale.
•   Se acordă 10 % din punctaj pentru determinarea corectă a numărului de cuvinte din text.
•   Se acordă 40 % din punctaj pentru rezolvarea corectă a primelor două cerinţe.
•   Pentru rezolvarea corectă a tuturor cerinţelor se acordă tot punctajul.

Exemplu
text.in   text.out   Explicaţii
pentru ca nu are

timp ion spune ca nu urmareste nici
emisiuni interesante si evident nici altfel
de

emisiuni   19
13
ion
nu
urmareste
emisiuni
interesante
evident   Din întregul text care este format din 19 cuvinte se elimină 13 cuvinte şi se obţin, în ordine, cuvintele: ion, nu, urmareste, emisiuni, interesante,
evident

Timp maxim de executare/test : 0.1 sec
Total memorie disponibilă : 2 MB (din care 1 MB pentru stivă)
Dimensiune maximă a sursei: 5 KB


Sa elimine cat mai putine cuvinte adica sa se determine cea mai munga secventa de cuvinte care incep cu ultima litera a celuilalt.Cum as putea sa scot aceasta secventa?Idei mai simple?
5  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Secventa palindromica : Februarie 09, 2015, 15:15:49
nimeni?
6  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Secventa palindromica : Februarie 04, 2015, 15:09:43
Se citeste un sir de caractere.Sa se specifice cea mai lunga secventa cu prop. palindromica.Daca sunt mai multe,se afiseaza toate.

Ex:" Acojoctar eabbbar" si se afiseaza cojoc si abbba


ma gandeam sa delimitez cuvintele cu strtok.apoi sa adaptez
Cod:
int i = k, j = n;
ok = true;
while ( ok && i < j )
{
if ( s[i] != s[j] )
ok = false;
i++;
j--;
}
if ( ok == true ) {
is = k, js = n;
return;
}


asta pentru toate,cu k=j=0 ,dar nu prea a mers...
7  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: subsiruri suma : Ianuarie 27, 2015, 20:46:34
si daca numarul drebuie format doar din doua numere?
8  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 006 Factorial : Ianuarie 27, 2015, 18:21:10
Cod:
#include <iostream>
#include<fstream>

using namespace std;

int main()
{
    long P;
    int v[1000],stop,i=1,n=0,k,t;
    ifstream f("factorial.in");
    ofstream g("factorial.out");
    f>>P;
  v[1000]=1;
  while(stop!=P)
    {t=0;
        stop=0;
    k=1000;
        v[k]*=i;
        while(v[k]>=10){n=v[k];k--;v[k+1]=n%10;v[k]+=n/10;}
        for(n=1000;n<=k&&t==0;n--){if (!v[n])stop++ ;else t=1;}
i++;
    }
    g<<i;
    f.close();g.close();
}

de ce nu merge?
9  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / subsiruri suma : Ianuarie 24, 2015, 18:55:47
se citeste un sir de n numere.sa se scrie numerele care adunate ,dau o suma egal cu nr k.

exemplu
n=10
9 2 7 4 5 10 3 8 1 6   si k =13

10 +3
9+4
7+5 +1
etc...

ma gandeam sa sortez crescator vectorul si apoi cu i=0,i<n-1 si j=i+1;j<n  sa fac o suma care cat timpe mai mica decat k sa adune in ea....nu prea iese
10  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 000 Algoritmul lui Euclid : Ianuarie 19, 2015, 21:08:33
NU STIU DE CE IAU DOAR 100 PUNCTE Fighting

nu stiu de ce esti asa modest
11  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 18, 2015, 22:59:24
 for(int i=0;i<=N+1;++i)
        sol
  • =sol[M+1]=Valoare;
   for(int i=0;i<=M+1;++i)
        sol[0]=sol[N+1]=Valoare;

deci aici doar incarca matricea cu infinit (nu doar marginea ia valoarea 2^30 ci si componentele din interior)


 for(int i=N-1;i;--i)   cu i de la N-1 pana la i ,i scade...dar i are valoarea 1 sau?
12  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 18, 2015, 22:03:39
si de ce a doua amtrice incepe de la 0 pana la coloana +1 ,adica cu 2 mai mult?


const int Valoare=(1<<30);  asta nu face altceva decat sa ridica la putere.cum pot sa ia respectivele valoarea lui Valoare,daca sunt declarate de tip int,adica intru e 32.000 maxim si nr 2 la 30 e imens.
13  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 18, 2015, 13:14:56
for(int i=0;i<=N+1;++i) sol [ i ][ 0 ] = s o l [ i ] [ M+1]=Valoare;

deci sol [ i ] [m+1] = 2^30; si sol [ i ] [ 0 ] = sol [ i ] [M+1] adica ia valoarea lui 2^30 ?  
14  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 17, 2015, 20:39:17
cat de important e faza cu bitii in ex?il pot inlocui cu # Define valoare 2^30 ?de ce i-ai dat o valoare asa mare?




if(x>0) return x;
    return -x

al doilea return e de la else ?pot pune cstlib si abs in loc de subprogram?

ai folosit mutarea bitilor ca sa incarci matricea sol?
15  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 17, 2015, 19:31:19
care e treaba cu virgula aia de acolo ?

const int Valoare=(1<<30);  

cont ce face?cu ce pot inlocui << ?

sol
  • =sol[M+1]=Valoare;      adica sol i 0 ia valoare lui sol de i m=1 si sol de i m=1 ia valoarea lui Valoare?
16  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 17, 2015, 18:51:04
http://campion.edu.ro/arhiva/www/arhiva_2009/seds/7/index.htm


asta poate sa ajute?

Citat
Cod:
#include<stdio.h>
#include<algorithm>
using namespace std;
const int Valoare=(1<<30);
int C[205][205],sol[205][205];bool ok;
int modul(int x)
{
    if(x>0) return x;
    return -x;
}
int main()
{
    int N,M,P;
    freopen("robot.in","r",stdin);
    freopen("robot.out","w",stdout);
    scanf("%d%d%d",&P,&N,&M);
    for(int i=1;i<=N;++i)
        for(int j=1;j<=M;++j)
            scanf("%d",&C[i][j]);
    for(int i=0;i<=N+1;++i)
        sol[i][0]=sol[i][M+1]=Valoare;
    for(int i=0;i<=M+1;++i)
        sol[0][i]=sol[N+1][i]=Valoare;
    for(int i=N-1;i;--i)
        for(int j=1;j<=M;++j){
            sol[i][j]=min(sol[i+1][j-1]+modul(C[i][j]-C[i+1][j-1]),min(sol[i+1][j]+modul(C[i][j]-C[i+1][j]),sol[i+1][j+1]+modul(C[i][j]-C[i+1][j+1])));
        }
    for(int i=1;i<=M;++i)
        if(sol[1][i]<P){
            printf("%d ",i);
            ok=1;
        }
    if(!ok)
        printf("-1");
    fclose(stdin);fclose(stdout);
    return 0;
}

am am invatat niste programare dinamica si am niste intrebari despre codul tau :  pot sa pun fstream in loc de stdio si f>> respectiv g<< in loc de printf si scanf?

in partea cu (C[j]-C[i+1][j-1]),min(sol[i+1][j] ce cauta virgula aia acolo?

min ( )  e o functie din biblioteca algorithm?
17  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 11, 2015, 17:41:17
asta si incerc Tongue
18  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 001 CMMDC : Ianuarie 11, 2015, 12:31:24
Cod:
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
int a,b,i,S=0;
ifstream f("cmmdc.in");
f>>a>>b;
while((a!=b)&&(a>0)&&(b>0))
{if(a>b)a=a-b;
else b=b-a;
}
  for(i=1;i<=b;i++)
    {if(b%i==0)S=S+i;
}
ofstream g("cmmdc.out");
if(S>(b+1))g<<b;
else g<<"0";
 
return 0;
}

de ce esueaza la ultimul test? 90 puncte imi da
19  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Ianuarie 07, 2015, 19:54:15
esti sigur ca numai prin prog dinamica se rezolva.am incercat sa refac putin codul si cred ca e aproape bine ,dar nu stiu cum sa il fac sa o ia din nou pe aceeasi coloana de fiecare data cand se blocheaza in vecini

Cod:
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
int main()
{
int n,m,j,a[200][200],afisaj=0,gasit,lin,col,ene,x=0;
ifstream f("nrdiv.in");
ofstream g("nrdiv.out");
f>>ene>>n>>m;
for(lin=1;lin<=n;lin++)for(j=1;j<=m;j++)f>>a[lin][j];
x=ene;
for(j=1;j<=m;j++)
{ene=x;
    lin=1;
    col=j;
    gasit=0;
    while(ene>0&&gasit==0)
    {
        if(ene>=abs(a[lin][col]-a[lin+1][col]))
        {
        lin++;
        ene-=abs(a[lin][col]-a[lin+1][col]);
        if(lin==n)gasit=1;
        }
        else if(col-1>=1&&ene>=abs(a[lin][col]-a[lin+1][col-1]))
        {
        lin++;
        ene-=abs(a[lin][col]-a[lin+1][col-1]);
        if(lin==n)gasit=1;
        }
        else if(col+1<=m&&ene>=abs(a[lin][col]-a[lin+1][col+1]))
        {
           lin++;
        ene-=abs(a[lin][col]-a[lin+1][col-1]);
        if(lin==n)gasit=1;
        }
        if (gasit==1)
        {
            g<<j;
            afisaj++;
        }
        else
        {
            if(j==m&&afisaj==0)g<<-1;
        }


    }
}

}



e prob de olimp de clasa a X-a locala,si in cls X nu se invata prog dinamica.si daca spune sa se afiseze o Valoare (de exemplu -1) trebuie sa il pun intre " " sau doar -1 fara ele?Am mai vazut prob de genul la locale(adica coborare si cercetare daca merge drept in fata sau dreapta sau stanga ,tot a 10-a si nu cred ca e cu dinamica.
20  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Decembrie 22, 2014, 23:53:36
Imi pare rau dar nu am invatat ,,programare dinamica" ,functii,siruri de caractere si ce alte lucruri mai apar in codul tau.O alta rezolvare mai simpla ca amterie nu exista.Sa nu uitam totusi ca este vorba de un exercitiu de la faza locala din Bucuresti ,si nu cred ca elevii respectivi au ajuns la asa ceva,chiar daca sunt la intensiv.(poate doar siruri de caractere,dar programare dinamica...)
21  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Decembrie 22, 2014, 16:45:22
nimeni?
22  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Decembrie 20, 2014, 23:55:34
ok multumesc.acum,imi puteti spune ce este in neregula cu codul?


in fisier imi afiseaza -1 pe exemplu,cand ar trebui s aimi afiseze ca sunt solutii si solutiile respective
23  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Robot : Decembrie 20, 2014, 23:20:47
si cu ce as putea sa o inlocuiesc ca sa aflu modulu?
24  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Robot : Decembrie 20, 2014, 18:04:30
http://www.olimpiade.ro/materiale/informatica-2013-subiecte-si-bareme-bucuresti-5    Subiectul I

Cod:
#include <iostream>
#include <fstream>
#include <math.h>

using namespace std;

int main()
{int c[200][200], m,n,p,i,j,salvarep=0,v,l,existasolutii=0;
    ifstream f("robot.in");
    f>>p>>m>>n;
    ofstream g("robot.out");
    salvarep=p;
    for(i=1;i<=n;i++)for(j=1;j<=m;j++)f>>c[i][j];
    for(j=1;j<=m;j++)
    {p=salvarep;
    i=1;
        while(p>0)
       {
       l=i;
       v=j;
       if(c[l+1][v]<=c[l+1][v+1]&&c[l+1][v]<c[l+1][v-1])
       {l++;
       p=p- abs(c[l-1][v]-c[l][v]);
       }
       else if(c[l+1][v+1]<=c[l+1][v]&&c[l+1][v+1]<c[l+1][v-1])
       {l++;
       v++;
       p=p-abs(c[l-1][v-1]-c[l][v]);
       }
       else if(c[l+1][v-1]<=c[l+1][v+1]&&c[l+1][v-1]<c[l+1][v])
       {l++;
       v--;
       p=p-abs(c[l-1][v+1]-c[l][v]);
       }
       if(l==n&&p>0){g<<j<<" ";p=-1;existasolutii=1; }



    }
    }
    if(existasolutii==0)g<<"-1";
}

Prima problema este in legatura cu functia abs,care stiam ca se foloseste pentru modulul numarului.Desi am declarat biblioteca math.h (codeblocks) imi apare o eroare "abs wasn't declared in this scope".

25  infoarena - concursuri, probleme, evaluator, articole / Probleme externe / Răspuns: Iesire din matrice : Decembrie 18, 2014, 14:41:18
Multumesc frumos.Ma asteptam sa fi gresit mai mult Smile))
Pagini: [1] 2
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines