Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: inserare element  (Citit de 2246 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
fsanzi
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« : Martie 29, 2012, 20:23:56 »

buna. am nevoie de ajutor cu o problema: se cere sa se insereze elementul m in vectorul v[] inainte de elementul x. x si m se citesc de la tastatura.
am facut programul, insa din nu stiu ce motiv nu imi merge.
iata cum l-am gandit eu:
#include<iostream>
using namespace std;
int main()
{
int v[100],n,i,x,m,a;
cout<<"n= ";
cin>>n;
cout<<"x= ";
cin>>x;
cout<<"m= ";
cin>>m;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]= ";
cin>>v;
}
for(i=1;i<=n;i++)
{
if(v==x)
{
n=n+1;
a=i;
for(i=n;i>a;i--)
{
v=v[i-1];
}
v[i-1]=m;
}
}
for(i=1;i<=n;i++)
{
cout<<v<<" ";
}
}

unde am gresit??
Memorat
andunhill
Vorbaret
****

Karma: 12
Deconectat Deconectat

Mesaje: 183



Vezi Profilul
« Răspunde #1 : Martie 29, 2012, 20:35:35 »

In primul rand nu citesti vectorul bine.
Citat
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]= ";
cin>>v[ i ];
}
Apoi:
Citat
if(v[ i ] ==x)

Tot ai repetat greseala asta. Modifica peste tot unde ai scris doar v si de acolo te descurci tu.  Whistle
Memorat
visanr
Nu mai tace
*****

Karma: 168
Deconectat Deconectat

Mesaje: 213



Vezi Profilul
« Răspunde #2 : Martie 29, 2012, 20:37:06 »

Alta greseala e ca ai for-uri imbricate, pe la jumate, si folosesti aceeasi variabila pt amandoua for-urile, adica i. Foloseste la primul for i si la al doilea j.
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #3 : Martie 29, 2012, 20:38:08 »

Adunhill, citeste bine, vezi tu, el o uitat sa puna tagurile code si ... astfel, v[i ] (fara spatiu) s-a transformat in v simplu, si tot ce are indicele [i ] se transforma in scris italic. Maria, pune tagurile code ca sa ne putem uita peste sursa Smile.
Memorat
fsanzi
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #4 : Martie 29, 2012, 21:16:02 »

*cu tagurile code:
Cod:
#include<iostream>
using namespace std;
int main()
{
int v[100],n,i,x,m,a;
cout<<"n= ";
cin>>n;
cout<<"x= ";
cin>>x;
cout<<"m= ";
cin>>m;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]= ";
cin>>v[i];
}
for(i=1;i<=n;i++)
{
if(v[i]==x)
{
n=n+1;
a=i;
for(i=n;i>a;i--)
{
v[i]=v[i-1];
}
v[i-1]=m;
}
}
for(i=1;i<=n;i++)
{
cout<<v[i]<<" ";
}
}
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #5 : Martie 29, 2012, 21:17:02 »

Da, vad ca ai 2 foruri imbracate, si folosesti TOT PE i ca post de indice, foloseste la al doilea for (i = n, i > a, --i), foloseste j, si ar trebuie sa mearga (nu am verificat).
Memorat
fsanzi
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #6 : Martie 31, 2012, 16:27:03 »

Cod:
#include<iostream>
using namespace std;
int main()
{
int v[100],n,i,x,m,a,j;
cout<<"n= ";
cin>>n;
cout<<"x= ";
cin>>x;
cout<<"m= ";
cin>>m;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]= ";
cin>>v[i];
}
for(i=1;i<=n;i++)
{
if(v[i]==x)
{
n=n+1;
a=i;
for(j=n;j>a;j--)
{
v[j]=v[j-1];
}
v[i]=m;
}
}
for(i=1;i<=n;i++)
{
cout<<v[i]<<" ";
}
}
nu, nu merge  Brick wall
Memorat
soriyn
Vorbaret
****

Karma: 24
Deconectat Deconectat

Mesaje: 150



Vezi Profilul
« Răspunde #7 : Martie 31, 2012, 16:38:49 »

Problema e ca iti intra in ciclu infinit sau ceva de genul. Gandeste-te ca iti face inlocuirea si practic pe x ti-l muta cu o pozitie mai la dreapta. Iti intra in ciclu pentru ca primul for se continua si mutandu-l pe x mereu mai la dreapta il va gasi mereu si iar o sa incerce sa iti adauge pe m in fata lui. Ca sa remediezi asta trebuie sa pui un break dupa v[ i ]=m;
Memorat
fsanzi
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #8 : Martie 31, 2012, 16:51:08 »

merge! multumesc mult Banana
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines