Informatică, întrebare adresată de marianbargan, 8 ani în urmă

Urgent!Mă puteți ajuta cu acest program? Nu merge din cauza acestei erori segmentation fault (core dumped). Nu înțeleg cum să fac să funcționeze.
#include
using namespace std;
int main(){
int a[100],b[100],i,n,j,k,x,p;
cout<<"Introduceti dimensiunea vectorului: ";cin>>n;
for(i=0;i {cin>>a[i];
if(a[i]<0)
{
k++;
b[k]=a[i];
}}
for(i=0;i for((j=i+1);j<=k;j++)
if(b[i] p=k;
for(i=0;i<=n;i++)
if(a[i]>=0)
{
k++;
b[k]=a[i];
}
for(i=p;j for((j=i+1);j<=k;j++)
if(b[i]>b[j])swap(b[i],b[j]);
for(i=0;i<=k;i++)
cout< }



boiustef: DIN START TR. DE INITIALIZAT K
marianbargan: Se poate vă rog de specificat în ce mod?
boiustef: k=0;
era bine sa scrii enuntul problemei,, ca vedem un cod trunchiat si nu e clar unde gresesti si cum sa te ajutam...
marianbargan: Se consideră tabloul unidimensional A[1..n] cu elemente numere întregi. Să se compună un program care va rearanja toate elementele până la primul element maximal din tabloul A în ordine crescătoare iar cele ce urmează după acesta – în ordine crescătoare. Se va aplica metoda bulelor. Tabloul modificat se va afișa pe ecran.
De exemplu, având A = (4, -8, 7, -6, 0, 7, -5),se va obține A = (-8, 4, 7, 7, 0, -5, -6).
boiustef: iar cele ce urmează după acesta – în ordine DEScrescătoare.
marianbargan: Da, nu am atras atenția la această greșeală când am scris enunțul.

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n,i,j, nrmax, indmax, temp, a[100];

   cout << "n="; cin >> n;

   cout << "introdu " << n << " numere intregi: ";

   cin >> a[0]; nrmax=a[0]; indmax=0;

   for (i=1; i<n; i++)

   {

       cin >> a[i];

       if (a[i]>nrmax)

       {

           nrmax=a[i]; indmax=i;

       }

   }

   int schimb=1;

   while (schimb==1)

   {

       schimb=0;

       for (i=0; i<indmax-1; i++)

       {

           if (a[i+1]<a[i])

           {

               swap(a[i],a[i+1]);

               schimb=1;

           }

       }

   }

   schimb=1;

   while (schimb==1)

   {

       schimb=0;

       for (i=indmax+1; i<n-1; i++)

       {

           if (a[i+1] > a[i])

           {

               swap(a[i],a[i+1]);

               schimb=1;

           }

       }

   }

   cout << "tabloul ordonat: \n";

   for (i=0; i<n; i++)

       cout << a[i] << " ";

}

Explicație:

un singur vector...

aplicata metoda bulelor...  de la 0 la indmax (indicele primului maximal) cu ordonare crescatoare, si dela indmax+1 pana la capat pentru ordonare descrescatoare

Alte întrebări interesante