infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Robert din August 01, 2014, 15:37:33



Titlul: Problema Informatica
Scris de: Robert din August 01, 2014, 15:37:33
Buna, sunt nou pe forum si as avea nevoie de ajutor cu o problema la informatica.

Scrieti un program C/C++ care citeste de la tastatura un numar natural n (2<n<50) si cele n elemente ale unui tablou unidimensional, numere naturale cu cel mult patru cifre, dintre care cel putin doua au paritate diferita. Programul determina apoi transformarea in memorie a tabloului citit prin eliminarea primului numar par, apoi afiseaza pe ecran elementele tabloului obtinut.
Exemplu: pentru n=11 si tabloul (1, 3, 2, 4, 0, 5, 8, 7, 6, 10, 3)
se obtine tabloul (1, 3, 4, 0, 5, 8, 7, 6, 10, 3)

si asta am facut eu pana acum, eu lucrez cu MinGW Developer Studio:

#include<iostream>
using namespace std;
int main ()
{int n,i,a[100],k=0,par,j;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";
cin>>a;}
for(i=1;i<=n;i++)
{if(a%2==0)
   {par=a;
k=k+1;}
else
   par=0;
cout<<"\npar="<<par;}
cout<<"\nk="<<k;

cout<<"\nsirul este=";
for(i=1;i<=n;i++)
   cout<<a<<" ";
return 0; }

am aflat cate numere sunt pare din sir dar ce nu reusesc este sa elimin primul element par din sir, daca puteti sa ma ajutati  :)



Titlul: Răspuns: Problema Informatica
Scris de: Mocanu George din August 01, 2014, 16:39:42
Ai putea sa retii pozitia primului numar par din sir iar la scrierea tabloului sa nu-l mai afisezi pe acesta.
Cod:
#include<iostream>
using namespace std;
int N,a[50],par;
int main()
{
    cin>>N;
    for(int i=1;i<=N;++i){
        cin>>a[i];
        if(!par && a[i]%2==0) par=i;
    }
    for(int i=1;i<=N;++i)
        if(i!=par) cout<<a[i]<<" ";
    return 0;
}

Dar cum cerinta precizeaza "transformarea in memorie a tabloului citit ", va trebui sa mutam cu o pozitie inapoi fiecare element citit dupa primul numar par.
Cod:
#include<iostream>
using namespace std;
int N,a[50],par,nr;
int main()
{
    cin>>N;
    for(int i=1;i<=N;++i){
        cin>>nr;
        if(!par && nr%2==0){
            par=1;continue;
        }
        a[i-par]=nr;
    }
    for(int i=1;i<=N-par;++i)
         cout<<a[i]<<" ";
    return 0;
}


Titlul: Răspuns: Problema Informatica
Scris de: Robert din August 01, 2014, 17:23:32
Multumesc de ajutor  :thumbup: