Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Boxa membrana tweeter infundata

ajutor

Whisky for Mac

Xiaomi 14 Gpay
 Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...
 De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...

Scor FICO minim

Tonometru compensat CAS?
 polita RCA ONLINE

Termostat frigider - verificare

Mai au PC-urile vreun viitor?

Centrala termica immergas
 

[TEMA]Stergerea tuturor elementelor care au un numar par de cifre pare

- - - - -
  • Please log in to reply
8 replies to this topic

#1
AdrianUrsaciuc

AdrianUrsaciuc

    Junior Member

  • Grup: Members
  • Posts: 161
  • Înscris: 02.04.2014
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
loveparade

loveparade

    Senior Member

  • Grup: Senior Members
  • Posts: 2,429
  • Înscris: 23.07.2006
Of, of, mai, mai...
"numar par de cifre pare"   exista si numere impare de cifre pare?Posted Image  Numere de cifre? Litere de cuvinte, Infinit de mic, mai alb ca albul....

#3
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,025
  • Înscris: 24.02.2006
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;
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).

Edited by _Smiley_, 23 September 2014 - 15:46.


#4
AdrianUrsaciuc

AdrianUrsaciuc

    Junior Member

  • Grup: Members
  • Posts: 161
  • Înscris: 02.04.2014

View Postloveparade, on 23 septembrie 2014 - 15:37, said:

Of, of, mai, mai...
"numar par de cifre pare"   exista si numere impare de cifre pare?Posted Image  Numere de cifre? Litere de cuvinte, Infinit de mic, mai alb ca albul....
nu ai inteles vezi exemplu de la smiley el a inteles

View Post_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).
Am bagat o chestie acolo un l e bun sau e pus degeaba?
if(k%2==0)
	{
		k=l;
		 n--;
		 for (int i=l;i<n;i++)
		 a[i]=a[i+1];
	}



#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,423
  • Înscris: 10.08.2005

View PostAdrianUrsaciuc, 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.
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.

Edited by MarianG, 23 September 2014 - 16:46.


#6
AdrianUrsaciuc

AdrianUrsaciuc

    Junior Member

  • Grup: Members
  • Posts: 161
  • Înscris: 02.04.2014

View PostMarianG, 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.
am rezolvat

#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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,423
  • Înscris: 10.08.2005
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
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

Neurochirurgie minim invazivă 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate