infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Foia Maria Sanziana din Martie 29, 2012, 20:23:56



Titlul: inserare element
Scris de: Foia Maria Sanziana din 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??


Titlul: Răspuns: inserare element
Scris de: Macarescu Sebastian din 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.  :-'


Titlul: Răspuns: inserare element
Scris de: Visan Radu din 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.


Titlul: Răspuns: inserare element
Scris de: Simoiu Robert din 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 :).


Titlul: Răspuns: inserare element
Scris de: Foia Maria Sanziana din 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]<<" ";
}
}


Titlul: Răspuns: inserare element
Scris de: Simoiu Robert din 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).


Titlul: Răspuns: inserare element
Scris de: Foia Maria Sanziana din 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  ](*,)


Titlul: Răspuns: inserare element
Scris de: Sorin Rita din 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;


Titlul: Răspuns: inserare element
Scris de: Foia Maria Sanziana din Martie 31, 2012, 16:51:08
merge! multumesc mult :banana: