Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
[TEMA]Stergerea tuturor elementelor care au un numar par de cifre pare
Last Updated: Sep 23 2014 18:31, Started by
AdrianUrsaciuc
, Sep 23 2014 14:45
·
0
#1
Posted 23 September 2014 - 14:45
Se citeste un vector sa se stearga din vector toate elementele care au un numar par de cifre pare.
Am scris codul asta si nu imi arata nimic. #include <iostream> using namespace std; int main () { int n, a[100],c,k=0; cout<<"n=";cin>>n; for (int i=0;i<n;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(int i=0;i<n;i++) { c=a[i]%10; if(c%2==0) { n=n*10+c; k++; } a[i]=a[i]/10; } if(k%2==0) { n--; for (int i=k;i<n;i++) a[i]=a[i+1]; } for (int i=0;i<n;i++) cout<<a[i]<<" "; return 0; } |
#2
Posted 23 September 2014 - 15:37
Of, of, mai, mai...
"numar par de cifre pare" exista si numere impare de cifre pare? Numere de cifre? Litere de cuvinte, Infinit de mic, mai alb ca albul.... |
#3
Posted 23 September 2014 - 15:43
da. 123, de exemplu, are un numar impar de cifre pare. 1234, pe de alta parte, are un numar par de cifre pare.
@AdrianUrsaciuc : cand se ruleaza instructiunea asta Quote
a[i]=a[i]/10; sfatul meu: scrie o functie separata care accepta un numar si intoarce true/false (daca acel numar are numar par sau impar de cifre pare). Edited by _Smiley_, 23 September 2014 - 15:46. |
#4
Posted 23 September 2014 - 15:52
loveparade, on 23 septembrie 2014 - 15:37, said:
Of, of, mai, mai... "numar par de cifre pare" exista si numere impare de cifre pare? Numere de cifre? Litere de cuvinte, Infinit de mic, mai alb ca albul.... _Smiley_, on 23 septembrie 2014 - 15:43, said:
da. 123, de exemplu, are un numar impar de cifre pare. 1234, pe de alta parte, are un numar par de cifre pare. @AdrianUrsaciuc : cand se ruleaza instructiunea asta practic se modifica valorile din sir; intrucat ala e singurul loc in care pastrezi aceste valori, daca le modifici atunci nu le mai poti afisa ulterior. sfatul meu: scrie o functie separata care accepta un numar si intoarce true/false (daca acel numar are numar par sau impar de cifre pare). if(k%2==0) { k=l; n--; for (int i=l;i<n;i++) a[i]=a[i+1]; } |
#5
Posted 23 September 2014 - 16:46
AdrianUrsaciuc, on 23 septembrie 2014 - 14:45, said:
Se citeste un vector sa se stearga din vector toate elementele care au un numar par de cifre pare. apoi, te inveti sa folosesti functii care sa faca ce-ti cere problema/situatia In cazut tau, o functie care sa contorizeze elemente, de interes, dintr-o multime. Edited by MarianG, 23 September 2014 - 16:46. |
#6
Posted 23 September 2014 - 16:51
MarianG, on 23 septembrie 2014 - 16:46, said:
Daca vrei C++, lucrezi cu std:vector apoi, te inveti sa folosesti functii care sa faca ce-ti cere problema/situatia In cazut tau, o functie care sa contorizeze elemente, de interes, dintr-o multime. #include <iostream> using namespace std; int main() { int n,a[100],b[100]={0},c[100],nr; cout<<"n="; cin>>n; for(int i=0;i<n;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<endl; for(int i=0;i<n;i++) { nr=a[i]; while(nr!=0) { int c=nr%10; nr=nr/10; if(c%2==0 ) { b[i]+=1; } } } int p=0; for(int i=0;i<n;i++) { if(b[i]%2==0 && b[i]!=0) { } else { c[p]=a[i]; p++; } } cout<<endl; for(int i=0;i<p;i++) { cout<<"a["<<i<<"]="<<c[i]; cout<<endl; } cout<<endl; return 0; } |
#7
Posted 23 September 2014 - 17:11
ai carpit,
daca nu vrei sa folosesti std:vector, verifici numarul cand il citesti si nu-l mai salvezi. dar tot iti trebuie o functie care sa valideze elementele. Edited by MarianG, 23 September 2014 - 17:14. |
#8
Posted 23 September 2014 - 18:01
Mai incolo, cand vei intelege cum se scrie cod reutilizabil, solutia ar putea arata asa:
int par(int numar) { return numar % 2 == 0; } template<typename T> void stergeElementeCare(vector<T>& v, function<bool(const T&)> conditie) { auto it = v.begin(); while(it != v.end()) { if (conditie(*it)) { v.erase(it); it = v.begin(); } else { it++; } } } bool areNumarParDeCifrePare(const int& valoare) { Digitizer<int> cifre(valoare); return par(count_if(cifre.begin(), cifre.end(), par)); } int main() { vector<int> valori = {123, 234, 345, 456}; stergeElementeCare(valori, function<bool(const int&)>(areNumarParDeCifrePare)); for (int v : valori) cout << v << " "; return 0; } Quote
123 345 Chiar daca nu intelegi inca diverse elemente din cod, privindu-l comparativ cu al tau, daca nu ai sti cerinta, in cazul carui cod ti-ai da seama mai repede ce vrea sa faca? |
#9
Posted 23 September 2014 - 18:31
Chiar ma gandeam la clasa Digitizer pe care ai postat-o la articole cand am citit cerinta.
Daca vrea sa pluseze, poate sa scrie o functie care filtreaza datele in functie de un criteriu, si returneaza un container de acelasi tip, aici Digitizer<int>. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users