Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: ElaboraÈ›i un program in C. : Octombrie 28, 2016, 11:23:26
Ce nu intelegi ? Nu stii cum lucreaza instructiunea for ? Ce ai incercat sa faci ?
Data viitoare cand mai postezi incearca sa arati ce ai facut si ce nu stii, nu sa ti se da cod.
Astazi fac o exceptie.
Cel mai simplu este cu for si cu un vector care va reprezenta secventa de n numere.
C++ :
Cod:
#include<iostream>
using namespace std;
int main()
{
    int v[100],n,i;
    float mapoz=0,maneg=0,nrpoz=0,nrneg=0;
    cin>>n;
    for (i=0;i<n;i++)
    cin>>v[i];
    for (i=0;i<n;i++)
        if (v[i]<0){
            maneg = maneg+v[i];
            nrneg++;
        }
    for (i=0;i<n;i++)
        if (v[i]>=0){
            mapoz = mapoz+v[i];
            nrpoz++;
        }
    cout<<(maneg/nrneg)<<" "<<(mapoz/nrpoz)<<endl;
    return 0;
}

2  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Ajutor subprogram : Octombrie 18, 2016, 21:38:33
Multumesc Gavrila Vlad, n va fi 0.
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Ajutor subprogram : Octombrie 18, 2016, 17:15:58
Salutare !
Am o problema de rezolvata care aparent pare a fi foarte simpla.
"Să se scrie o funcție C++ care să returneze cel mai mare număr care se poate scrie cu cifrele unui număr natural transmis ca parametru."
Eu m-am gandit sa inserez cifrele nr. intr-un vector iar apoi sa il sortez descrescator. Pare foarte simplu, dar nu inteleg de ce nu imi afiseaza un rezultat corect. Dupa compilare imi apare mereu rezultatul "0" daca n>9.

Cod:
int cmmnr(int n)
{
    int v[100],i,t,k=0;
    if(n<=9)
        return n;
    while(n){
        t = n%10;
        n/=10;
        k++;
    }
    while(n){
        for(i=0;i<k;i++)
            v[i] = n%10; // copiez cifrele lui n in vector
      n/=10;
    }
   //sortez elem vectorului descrescator
    int aux,ok;
    do{
        ok = 1;
        for(i=0;i<n-1;i++)
        if(v[i]<v[i+1]){
            ok = 0;
            aux = v[i];
            v[i] = v[i+1];
            v[i+1] = aux;
        }
    }while(ok!=1);

    for(i=0;i<k;i++)
        return v[i]; // afisez
}

Unde am gresit ?
Va multumesc anticipat !
4  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Help. Problema algoritm! : Iunie 10, 2016, 16:59:16
E un algoritm pentru determinarea cifrei de control.
PSEUDOCOD:
Cod:
n,s intreg lung
citeste n
cat timp n>9 executa
 s<-0
   cat timp n>0 executa
      s<-s+n%10
      n<-n/10
   sfarsit cat timp
 n<-s
sfarsit cat timp
         scrie n

5  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: HELP !!!! : Mai 30, 2016, 18:04:59
Salut !
Ai enuntul complet al problemei, sa vad daca te pot ajuta ?
Adica calculezi aria si volumul in functie de laturi sau cum, pentru un paralelogram de ex tre sa stii inaltimea si latura pe care este perpendiculara inaltimea pentru a afla aria.
Ce citesti ? Care sunt datele de intrare la tine ?
6  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Ajutor ! Perfect incepator : Martie 29, 2016, 22:21:42
Cand dai cout la o variabila nu o pui intre ghilimele pentru ca vei primi erori de sintaxa.
Ghilimele sunt pentru mesaje.
De exemplu daca vrei sa afisezi un mesaj text scrii de exemplu: cout << "Salutare";
Nu se compileaza pentru ca ai erori de sintaxa, tu ai scris << "d3" in loc de << d3 fara ghilimele.
Iar ceea ce nu inteleg e de ce ai mai scris "d1,d2,d3" pe penultima linie, inainte de return 0.
Si atunci cand calculezi distanta d2, cum ai scris tu( d2=N-d1-d3; ) cum crezi ca o vei afla daca tu abia la urma calculezi valoarea variabilei d3?

Eu am rezolvat problema, daca iti mai trebuie codul sursa:

Cod:
#include <iostream>

using namespace std;

int main()
{
    float N,N1,N2,d1,d2,d3;

    cout << "Lungime traseu (km): ";
    cin >> N;

    if( N < 0)
    {
        cout << "Introduceti valori pozitive" << endl;
        return 0;
    }

    cout << "Km parcursi in primele 2 zile: ";
    cin >> N1;

    if( N1 < 0)
    {
        cout << "Introduceti valori pozitive" << endl;
        return 0;
    }

    cout << "Km parcursi in a 2 a si a 3 a zi: ";
    cin >> N2;

    if( N2 < 0)
    {
        cout << "Introduceti valori pozitive" << endl;
        return 0;
    }

    if( (N<=N1 || N<=N2) || (N>(N1+N2)) )
    {
        cout << "Introduceti date de intrare corecte!" << endl;
        return 0;
    }else{

      d1 = N-N2;
      d3 = N-N1;
      d2 = N1-d1;
 }

    if( N!=(d1+d2+d3) )
    {
        cout << "Introduceti date de intrare corecte!" << endl;
        return 0;
    }

    cout << "In prima zi parcurge: " << d1 << " km" << endl;
    cout << "In a doua zi parcurge: " << d2 << " km" << endl;
    cout << "In a treia zi parcurge: " << d3 << " km" << endl;

return 0;

}








7  infoarena - concursuri, probleme, evaluator, articole / Informatica / Sortari vectori C++ : Martie 21, 2016, 00:16:32
Salutare!
Am urmatoarea problema:
Fie un tablou unidimensional cu n elemente valori naturale. Sa se ordoneze descrescator aceste valori, dupa numarul de cifre distincte pe care le contin.
Exemplu: Pentru n=7 si A=(334, 124, 21, 34, 222, 1, 38=9) se va afisa:
124 334 21 34 39 222 1

Eu am scris codul asta:
Cod:
#include <iostream>

using namespace std;

int main()
{
    int n,v[20],nr=0,t,i,aux,ok;
    cout << "n="; cin >> n;

    for(i=0;i<n;i++)
        cin >> v[i];

    for(i=0;i<n;i++)
        while(i!=0)
        {
           t = i%10;
           i = i/10;
           nr = nr+1;
        }

    do{
        ok = 1;

        for(i=0;i<n;i++)
        {
            while(i!=0)
            {
               t = i%10;
               i = i/10;
               nr = nr+1;
            }
                 if(nr[v[i]]>nr[v[i+1]])
                 {
                    aux = v[i];
                    v[i] = v[i+1];
                    v[i+1] = aux;
                    ok = 0;
                 }
        }
    }while(ok!=1);

    for(i=n;i>=0;i--)
        cout << v[i] << " ";

return 0;

}



Primesc o eroare de sintaxa la linia 32. Am incercat in mai multe moduri dar pur si simplu nu reusesc sa rezolv problema.
Eu m-am gandit ca dupa ce citesc vectorul, va trebui sa numar ciferele fiecarei componente si sa afisez componenta(v[ i ]) daca nr cifrelor sale este mai mare decat ale urmatoarei componente(v[i+1]).
Dar nu stiu cum sa ma exprim in scris. Nu stiu cum ii spun calculatorului sa faca asta.
8  infoarena - concursuri, probleme, evaluator, articole / Informatica / Help | Problema C++ | Tablou unidimensional : Februarie 01, 2016, 23:17:04
Salut!
Am urmatoarea problema:
1. Se cunosc notele obtinute de n elevi la extemporalul de matematica. Sa se realizeze un program care afiseaza:
a) cate note mai mici ca 5 au fost obtinue
b) care este media aritmetica a notelor peste 5
c) cate note de 7 au fost obtinute
d) care este cea mai mare nota obtinuta

Am codul:
Cod:
#include <iostream>

using namespace std;

int main()
{
    int n,v[20],i,nr_notesub5=0,nr_notepeste5=0,s=0,nr_note7=0,maxim;
    cout << "n=";
    cin >> n;

    for(i=0;i<n;i++)
    {
        cin >> v[i];

           if(v[i]<5)
           {
            nr_notesub5 = nr_notesub5 + 1;
                 cout << " Numarul notelor sub 5 este " << nr_notesub5 << endl;
           }else
                 cout << " Nu exista note sub 5 " << endl;

           if(v[i]>5)
           {
            s = s + v[i];
            nr_notepeste5 = nr_notepeste5 + 1;
            float ma = s/nr_notepeste5;
                 cout << " Media aritmetica a notelor peste 5 este " << ma << endl;
           }else
                 cout << " Nu exista note peste 5 " << endl;

           if(v[i]==7)
           {
            nr_note7 = nr_note7 + 1;
                 cout << " Numarul notelor de 7 este " << nr_note7 << endl;
           }else
                 cout << " Nu exista note de 7 " << endl;

    maxim = v[0];

           if(v[i]>maxim)
            maxim = v[i];
                 cout << " Cea mai mare nota obtinuta este " << maxim << endl;
    }

return 0;

}

Pentru n = 6 si valorile 4 6 6 7 8 9 mi se afiseaza

Unde am gresit?
Daca rezolv problema cu 4 for-uri se afiseaza datele de iesire corect, dar m-am gandit sa incerc sa o fac cu un singur for, o data cu citirea.
Nu se poate doar cu un singur for?
Multumesc anticipat!
9  infoarena - concursuri, probleme, evaluator, articole / Informatica / PSEUDOCOD ajutor : Decembrie 06, 2015, 16:53:34
Am si eu cateva probleme pe care le-am avut la un test si nu am stiut sa le rezolv, dar as vrea sa va intreb pe voi daca ma puteti ajuta, va rog!?

1. Se citeste un numar natural n. Sa se afiseze numarul obtinut prin eliminarea cifrei din mijloc, daca n are un numar impar de cifre, respectiv a celor doua cifre din mijloc, daca n are un numar par de cifre.

2. Se citeste un numar natural n. Sa se afiseze toate numerele mai mici decat n care sunt egal cu suma patratelor cifrelor lor.


La prima problema chiar nu am nici o idee, iar la a doua problema am zis asa:

  n, t, s, x, y intreg
  t <- 0
    citeste n
      {cat timp t < n executa
        x <- t % 10
        y <- t / 10
        s = x * x + y * y 
          {daca s = t atunci
       }       scrie t
             altfel scrie "nu se pot afisa numerele care respecta proprietatea din enunt"
           }

am luat n - numarul natural care se citeste
t reprezinta toate numerele mai mici decat n
s - face suma patrelor cifrelor
x - indeparteaza ultima cifra
y - elimin ultima cifra

Va rog frumos sa imi ziceti daca e cat de cat ok ce am scris eu la a doua problema si daca poate cineva va rog sa imi explice problemele.
Va multumesc anticipat!

10  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Ajutor - programare structurata : Noiembrie 08, 2015, 22:25:27
1) Sa se afiseze toti divizoirii comuni a 2 nr. naturale
am zis asa:
 
        a, b, k intreg
        citeste a, b
       {daca a < b
               executa
        {pentru k <- 1, b
               executa 
           {daca a % k = b % k
                   atunci
                         scrie k
                   altfel
            }            scrie "nu se pot determina divizorii comuni"
      }
             
}

         {daca b < a
                executa
           { pentru k <- 1, a
                      executa
             {  daca a % k = b % k
                      atunci
                           scrie k
                      altfel
             }        scrie "nu se pot determina divizorii comuni" 
      }
}

Acum e corecta prima problema?

As mai avea o intrebare la o problema, daca am scris corect algoritmul si daca nu e corect, cum ar trebui rezolvata, dar as vrea si explicatii sa pot intelege.Te rog mult
2) Sa se afiseze nr. naturale mai mici sau egale decat n, nr natural dat, care au suma cifrelor mai mica sau egala decat n
am zis asa:

         n, i, s intreg
         s <- 0
         citeste n
        {pentru i <- 1, n
                  executa
              {daca s % i < = n
                  atunci
               s <- s + i
                        scrie s
      }
}
11  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: PSEUDOCOD - Structuri de date - : Noiembrie 08, 2015, 19:57:44
de ce div ia valori de la 2 pana la n/2 ?
adica de ce div <-2, n/2 si nu div <-2, n
?

* nu se specifica daca divizori proprii sau improprii
12  infoarena - concursuri, probleme, evaluator, articole / Informatica / Ajutor - programare structurata : Noiembrie 08, 2015, 18:47:58
Salut!
Vreau sa va intreb daca am elaborat corect algoritmii la cateva probleme.
Daca faceam programul pe calculator il compilam si vedeam daca imi aparea vreo eroare, dar in pseudocod nu am nicio sursa de verificare.

1) Sa se afiseze toti divizoirii comuni a 2 nr. naturale
am zis asa:
    
          a, b, k intreg
        citeste a, b
       {daca a < b
               executa
        {pentru k <- 1, b
               executa
           {daca a % k = b % k
                   atunci
                         scrie k
                   altfel
            }            scrie "nu se pot determina divizorii comuni"
      }
             
}


2) Sa se afle toate nr nat < 2000 care impartie la 24, 30, 18 dau restul 7
    
v - integ
v <- 1
{cat timp v < 2000
       executa
      v <- v + 1
   {daca v % 24 = 7 si v % 30 si v % 18 = 7
           atunci
             scrie v
  }
}

Va rog sa imi spuneti daca am scris corect algoritmii, si daca stiti vreun mod de a ma putea verifica.                  



        
13  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: PSEUDOCOD - Structuri de date - : Noiembrie 03, 2015, 20:56:01
Mersi, pentru ajutor, dar vreau sa te intreb cum numar? prin procesul de incrementare? si in algoritmul tau se va incrementa variabila div cu 1?
Daca poti te rog sa imi explici mai detaliat ti-as fi recunoscator Very Happy

Si n-am inteles de ce variabila div <- 2, n/2 ? Nu ar fi div <- 1, div? adica div ia valori de la 0 pana la el insusi inclusiv? ex: divizorii lui 6: 1, 2, 3, 6 ?

14  infoarena - concursuri, probleme, evaluator, articole / Informatica / PSEUDOCOD - Structuri de date - : Noiembrie 03, 2015, 00:19:58
Salutare!
Am urmatoarea problema:
1) Pentru un nr n citit de la tastatura se va afisa:
-multimea divizorilor lui n
-nr divizorilor lui n
-suma divizorilor lui n

Trebuie sa fac un algoritm care sa imi rezolve toate cele 3 cerinte sau trebuie sa fac cate un algoritm pentru fiecare cerinta in parte?

Am incercat ceva, la prima cerinta

n, i intreg
i <- 0
citeste n
{pentru n <- 0, 9
         executa
     i <- i + n
  {daca n % i = 0
         atunci
             scrie i
  }
}
    

Nu cred ca am scris bine algoritmul, va rog sa imi explicati ce trebuie sa fac.
Va multumesc anticipat! Very Happy

Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines