Warning Nu esti autentificat. Te rog autentifica-te sau inregistreaza-te pentru a avea acces la toate facilitatile forumului.
SkullBox  
Octombrie 12, 2008, 03:33:37 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: De-Ce.net - Tips & Tricks
 
   Pagina principală   Ajutor Caută Autentificare Creează un cont  
Del.icio.us Digg FURL FaceBook Stumble Upon Reddit SlashDot Google Bookmarks Ma.gnolia MSN Live Netscape Spurl Technorati Yahoo My Web

Pagini: [1]
  Imprimă  
Autor Subiect: [BAC 2008][c++]cel mai mare numar care ridicat la patrat
0 Utilizatori şi 1 Vizitator pe acest subiect.
theshadow170
Newbie
*
Deconectat Deconectat

Mesaje: 1


« : 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
Global Moderator
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 215



« Răspunde #1 : 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
#include
#include
#include

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
Newbie
*
Deconectat Deconectat

Mesaje: 1


« Răspunde #2 : 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
Global Moderator
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 215



« Răspunde #3 : 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
Newbie
*
Deconectat Deconectat

Mesaje: 1


« Răspunde #4 : 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
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 196


« Răspunde #5 : 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
Global Moderator
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 215



« Răspunde #6 : 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
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 196


« Răspunde #7 : 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:

citeste s;
f = array[0..255] of word;
for(i=0; i<256; i++) f=0;
for(i=0; i]++;
for (i=0; i<256; i++) afiseaja( caracter(i), f );
Memorat
emi
Global Moderator
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 196


« Răspunde #8 : 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<getch();
}
from: http://www.tek-tips.com/viewthread.cfm?qid=1467358&page=1
Memorat
astan
Global Moderator
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 215



« Răspunde #9 : 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
Full Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 196


« Răspunde #10 : 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;

citeste A[0..n][0..m]
// elementele de pe coloana sunt cele A[[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[j] > max_col ) { max_col = A[j]; pozitie_max_col = i; }
  }
  // aflam suma pe fiecare coloana
  suma_col = 0;
  for(i=0; i<=n; i++) suma_col += A[j];
  // inlocuim max cu suma
  A[pozitie_max_col][j] = suma_col;
}
Memorat
Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Creat cu MySQL Creat cu PHP Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro
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
Ethical hacking and programming community