Salut din nou !
Problema este aceasta:
Scrieti un program care citeste de la tastatura un numar natural nenul n(n<=1000),apoi construieste in memorie si afiseaza pe ecran un tablou unidimensional a,avand n elemente,ale carui capete vor fi completate cu toate numerele din multimea {1,2,......,n} luat alternativ,astfel: valoarea 1 pe prima pozitie,valoarea 2 pe ultima pozitie,valoarea 3 pe a doua pozitie,valoarea 4 pe penultima pozitie,s.a.m.d. Elementele tabloului creat se vor afisa cu cate un spatiu intre ele. Exemplu: n=9, tabloul va fi (1,3,5,7,9,8,6,4,2)
Intrebarea mea este..daca exista cumva vreo metoda mai simpla de rezolvare decat asta a mea ? Mi se pare ca prea m-am complicat
#include<iostream.h> int main() { int n,i,a[100],k=0,s,x; cout<<"n="; cin>>n; if (n%2!=0) // Cand n-ul este impar: UN EXEMPLU n=9, tabloul va fi (1,3,5,7,9,8,6,4,2) { s=1; for (i=1; i<=(n+1)/2; i++) // construiesc prima ''jumatate'' cu elementele 1,3,5,7,9 { a[i]=s; s=s+2; } x=n-1; for (i=((n+1)/2)+1; i<=n; i++) // construiesc a doua ''jumatate'' cu elementele 8,6,4,2 { a[i]=x; x=x-2; } for (i=1; i<=n; i++) cout<<a[i]<<" "; } else // Cand n-ul este par: UN EXEMPLU: n=8,tabloul va fi (1,3,5,7,8,6,4,2) { s=1; for (i=1; i<=n/2; i++) // construiesc prima ''jumatate'' 1,3,5,7 { a[i]=s; s=s+2; } x=n; for (i=(n/2)+1; i<=n; i++) //construiesc a doua ''jumatate'' 8,6,4,2 { a[i]=x; x=x-2; } for (i=1; i<=n; i++) cout<<a[i]<<" "; } }
Multumesc anticipat
#include<stdio.h>
#include<conio.h>
int main()
{int n,j=1,i,v[1000];
printf(„n=”);
scanf(„%d”,&n);
for(i=1;i<=n;i++)
if(i%2==1)
v[j]=i;
else
{v[n-j+1]=i;
j++;}
for(i=1;i<=n;i++)
printf(„%d „,v);
printf(„\n”);
getch();
return 0;}
Sper sa intelegi. Mi se pare mai eficient asha.
Multumesc mult ,Blaugranas! Imi trecuse prin cap idee asta sa ”reduc catre jumatate” dar..😀
Cu placere.
Se poate si mai simplu si mai rapid!
Codul e scris in TC++
foarte frumos larry😀
10x!😀