theshadow170
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
Gen: 
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. #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
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
Gen: 
Mesaje: 316
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iunie 26, 2008, 01:33:04 pm
|
|
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 ...  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
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
Gen: 
Mesaje: 498
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 24, 2008, 05:46:46 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.) 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
Gen: 
Mesaje: 316
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 24, 2008, 05:57:34 pm
|
|
Trisezi ...  Scrie si algoritmul pentru procedurile radical si partea_intreaga. Fara a folosi nici o structura repeptitiva.
|
|
|
|
|
Memorat
|
|
|
|
emi
Global Moderator
Deconectat
Gen: 
Mesaje: 498
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iulie 24, 2008, 06:05:48 pm
|
|
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[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
Gen: 
Mesaje: 498
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iulie 24, 2008, 06:21:50 pm
|
|
Trisezi ...  Scrie si algoritmul pentru procedurile radical si partea_intreaga. Fara a folosi nici o structura repeptitiva.  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
Gen: 
Mesaje: 316
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat, Iulie 24, 2008, 06:28:44 pm
|
|
^ Much better  Dar realizezi ca nu asta se cerea in exercitiul ala. Oricum, o bila alba pentru originalitate.
|
|
|
|
|
Memorat
|
|
|
|
emi
Global Moderator
Deconectat
Gen: 
Mesaje: 498
|
|
[BAC 2008][c++]cel mai mare numar care ridicat la patrat<n citit, Iulie 24, 2008, 10:35:34 pm
|
|
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[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
|
|
|
|
|
|
|