Warning Nu esti autentificat. Te rog autentifica-te sau inregistreaza-te pentru a avea acces la toate facilitatile forumului.
SkullBox  
Decembrie 04, 2008, 06:30:20 am
Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
Noutăţi: SmLex DeviantART
 
 SkullBoxDirector webTutoriale  Pagina principală   Ajutor Caută Autentificare Creează un cont  
Pagini: [1]
  Imprimă  
Subiect: [BAC 2008][c++]cel mai mare numar care ridicat la patrat
0Utilizatori şi 1 Vizitatori
theshadow170
*
Deconectat Deconectat

Mesaje: 1


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Mai 25, 2008, 08:42:10 pm

In varianta 98 de la bacalaureat, subiectul I, exercitiul 2, punctul c) se cere creearea unui algoritm care sa gaseasca cel mai mare numar care ridicat la patrat sa fie mai mic decat un nr "n" citit. Problema este ca acest algoritm trebuie facut fara structuri repetitive. Ma poate ajuta cineva sa rezolv acest exercitiu?

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat reprezentat
în pseudocod.
a) Scrieţi ce valoare se va afişa pentru n=10.
(6p.)
b) Scrieţi toate valorile care pot fi citite pentru n
astfel încât să se afişeze 4. (6p.)
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat care să nu utilizeze nicio structură
repetitivă. (4p.)
d) Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.)

citeste n (nr natural)
i <- 1
┌cât timp i*i ≤ n execută
│ i 􀃅 i+1
└■
scrie i-1
Memorat
astan
Skullbox user
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 316


[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iunie 07, 2008, 11:24:21 pm

Daca se specifica ca nu se pot folosi structuri repetitive, inseamna ca se doreste o solutie recursiva.
Algoritmul e implementat in functia f() din codul de mai jos.

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

using namespace std;

unsigned long f(unsigned long i, const unsigned long n)
{
   if (i * i >= n)
       return (i-1);

   return f(++i, n);
}
    
int main()
{
unsigned long n = 0;
char* tail;
string line;

while (1)
{
   cout << "Introduceti un numar (apasati ENTER sa incheiati programul)" << endl;
   getline(cin, line);

   if (line.empty())
       break;
     
   n = strtoul(line.c_str(), &tail, 10);
   if (*tail != '\0')
   {
       cout << "Numarul specificat (" << line.c_str() << ") nu este valid" << endl;
       continue;
   }
   
   if ((long)n < 0)
   {
       cout << "Numarul specificat (" << line.c_str() << ") este negativ" << endl;
       continue;
   }
   
   if (n > 1E10)
       cout << "Numarul specificat (" << line.c_str() << ") este prea mare" << endl;
   else    
       cout << "Valoarea cautata este " << f(1, n) << endl;
}
return EXIT_SUCCESS;
}
Memorat
stefan
*
Deconectat Deconectat

Mesaje: 1


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iunie 26, 2008, 01:38:49 am

De fapt cerinta se poate reduce la afisarea celui mai mare intreg mai mic sau egal decat radical din n.
Memorat
astan
Skullbox user
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 316


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iunie 26, 2008, 01:33:04 pm

Citat din mesajul lui: stefan
De fapt cerinta se poate reduce la afisarea celui mai mare intreg mai mic sau egal decat radical din n.
Nu se doreste sa se reduca la asta ... Smile Evident sa se poate, dar nu asta cere exercitiul.
Nu ai inteles cerinta ...
Altfel de ce crezi ca mai ma complicam cu o solutie recursiva ? Poate pentru ca asta se vrea ...

Ceea ce se cere de fapt este ca algoritmul de mai jos:

citeste n (nr natural)
i <- 1
┌cât timp i*i ≤ n execută
│ i 􀃅 i+1
└■
scrie i-1

sa se implementeze fara a se folosi nici o structura repetitiva

Daca tu te gandesti sa folosesti functia sqrt in implementarea ta ... NO WAY ... n-ai voie
Memorat
vio
*
Deconectat Deconectat

Mesaje: 1


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 23, 2008, 09:15:12 am

cine ma poate ajuta sa rezolv 3 probleme...
1) in fisierul nume.txt se gasesc scrise unul sub altul numele mai multor persoane. se cere sa se afiseze pe ecran numele care incep cu un anumit caracter citit de la tastatura....

2) sa se inlocuiasca fiecare element maxim de pe o coloana a unei matrice cu suma elementelor de pe coloana respectiva

3) Se citeste un text de la tastatura. Sa se scrie un program C++ care sa afiseze frecventele de aparitii ale tututor caracterelor din textul dat.

multumesc...
Memorat
emi
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 498


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 24, 2008, 05:46:46 pm

Citat din mesajul lui: theshadow170
In varianta 98 de la bacalaureat, subiectul I, exercitiul 2, punctul c) se cere creearea unui algoritm care sa gaseasca cel mai mare numar care ridicat la patrat sa fie mai mic decat un nr "n" citit. Problema este ca acest algoritm trebuie facut fara structuri repetitive. Ma poate ajuta cineva sa rezolv acest exercitiu?

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat reprezentat
în pseudocod.
a) Scrieţi ce valoare se va afişa pentru n=10.
(6p.)
b) Scrieţi toate valorile care pot fi citite pentru n
astfel încât să se afişeze 4. (6p.)
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat care să nu utilizeze nicio structură
repetitivă. (4p.)
d) Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.)
2.a) raspuns:

citeste n;
r = partea_intreaga( radical(n) );
daca(r*r = n) afiseaza(r-1) altfel afiseaza(r);

2.b) raspuns:

r = 4;
n = r*r+1;
n1 = (r+1)*(r+1);
m = [n..n1];
afiseaza(m);

2.c) raspuns deja dat la puncul a) si b)
Memorat
astan
Skullbox user
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 316


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 24, 2008, 05:57:34 pm

Trisezi ... Laughing
Scrie si algoritmul pentru procedurile radical si partea_intreaga. Fara a folosi nici o structura repeptitiva.
Memorat
emi
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 498


[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iulie 24, 2008, 06:05:48 pm

Citat din mesajul lui: vio
cine ma poate ajuta sa rezolv 3 probleme...
1) in fisierul nume.txt se gasesc scrise unul sub altul numele mai multor persoane. se cere sa se afiseze pe ecran numele care incep cu un anumit caracter citit de la tastatura....

2) sa se inlocuiasca fiecare element maxim de pe o coloana a unei matrice cu suma elementelor de pe coloana respectiva

3) Se citeste un text de la tastatura. Sa se scrie un program C++ care sa afiseze frecventele de aparitii ale tututor caracterelor din textul dat.

multumesc...
3) pseudocod:
Cod:
citeste s;
f = array[0..255] of word;
for(i=0; i<256; i++) f[i]=0;
for(i=0; i<lungime(s); i++)  f[s[i]]++;
for (i=0; i<256; i++) afiseaja( caracter(i), f[i] );
Memorat
emi
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 498


[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iulie 24, 2008, 06:21:50 pm

Citat din mesajul lui: astan
Trisezi ... Laughing
Scrie si algoritmul pentru procedurile radical si partea_intreaga. Fara a folosi nici o structura repeptitiva.

Laughing

Cod:
void square_root(int intA, float Result)
{
asm {
  fild intA
  fsqrt
  fst Result

  jmp End
}
End:

cout<<Result;
getch();
}
from: http://www.tek-tips.com/viewthread.cfm?qid=1467358&page=1
Memorat
astan
Skullbox user
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 316


[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 24, 2008, 06:28:44 pm

^
Much better Smile Dar realizezi ca nu asta se cerea in exercitiul ala. Oricum, o bila alba pentru originalitate.
Memorat
emi
Global Moderator
*
Deconectat Deconectat

Gen: Bărbat
Mesaje: 498


[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iulie 24, 2008, 10:35:34 pm

Citat din mesajul lui: vio
cine ma poate ajuta sa rezolv 3 probleme...
1) in fisierul nume.txt se gasesc scrise unul sub altul numele mai multor persoane. se cere sa se afiseze pe ecran numele care incep cu un anumit caracter citit de la tastatura....

2) sa se inlocuiasca fiecare element maxim de pe o coloana a unei matrice cu suma elementelor de pe coloana respectiva

3) Se citeste un text de la tastatura. Sa se scrie un program C++ care sa afiseze frecventele de aparitii ale tututor caracterelor din textul dat.

multumesc...
2. solutie; pseudocod;
Cod:
citeste A[0..n][0..m]
// elementele de pe coloana sunt cele A[i][[0..m], i fiind intre 0 si n;
// elementele de pe linie sunt cele A[0..n][j], j fiind intre 0 si m;

for(j=0; j<=m; j++) { // sa aflam max pe fiecare coloana
  max_col=0;
  pozitie_max_col=0;
  for(i=0; i<=n; i++) {
    if( A[i][j] > max_col ) { max_col = A[i][j]; pozitie_max_col = i; }
  }
  // aflam suma pe fiecare coloana
  suma_col = 0;
  for(i=0; i<=n; i++) suma_col += A[i][j];
  // inlocuim max cu suma
  A[pozitie_max_col][j] = suma_col;
}
Memorat
SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Creat cu MySQL Creat cu PHP Ethical hacking and programming community Director web romanesc cu inscriere gratuita Validat cu XHTML 1.0! Validat cu CSS!
IPFind, FAQDB, LAMP.ro, Good Proxy, Aberez.EU, RoFreeSBIE, ShockingSoft.com, HostVision, Invatam.net, PC Troubleshooting, Curs valutar online
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro