Răspuns :
Răspuns:
#include <stdio.h>
#include <stdlib.h>
int* citire_vector(int *dim);
char* afisare_vector(int dim, int x[]);
char* vector_invers(int dim,int x[]);
int main()
{
char c;
int n,*v,i,j,*vectorC,aux,k=0,copieV[100],s=0,suma[100];
float media;
printf("Aplicatii menu...\n");
do
{
system("cls");
printf("O. Citire vector (dinamic)\n");
printf("P. afișare vector.\n");
printf("b. afisseaza in ordine inversa elementele vectorului\n");
printf("c. afiseaza in ordine crescatoare nr vectorului\n");
printf("d. afiseaza val de pe pozitii pare din vect\n");
printf("e. afiseaza nr prime din vector\n");
printf("f. afiseaza nr din vector care incep cu cifra 7\n");
printf(" g. afiseaza nr de divizori ai fiecarui numar din vector\n");
printf(" h. afiseaza pt fiecare numar suma cifrelor sale\n");
printf("i. afiseaza pt fiecare numar produsul primelor doua cif ale sale\n");
printf("j. afiseaza nr din vector care au toate cif egale.\n");
printf("X. Ieşire.\n");
c=getch();
c=toupper(c);
switch(c)
{
case 'O':
v=citire_vector(&n);
getch();
break;
case 'P':
printf("%s",afisare_vector(n,v));
getch();
break;
case 'B':
printf("%s",vector_invers(n,v));
getch();
break;
case 'C':
for ( i = 0; i <n ; i++ )
for ( j = i + 1; j <= n; j++ )
if ( v[i] > v[j] )
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
printf("vectorul sortat cresc este:");
for(i=0; i<n; i++)
printf("%d ",v[i]);
getch();
break;
case 'D':
for(i=0; i<n; i++)
{
if(i%2==0)
{
printf("%d ",v[i]);
}
}
case 'E':
for(i=0; i<n; i++)
{
int ok=1;
for(int d=2; d<=v[i]/2; d++)
if(v[i]%d==0)
{
ok=0;
}
if(ok==1)
{
printf("%d ",v[i]);
k++;
}
if(k==0)
printf("nu exista nr prime");
}
getch();
break;
case 'F':
for(i=0; i<n; i++)
{
copieV[i]=v[i];
while(v[i]>9)
{
v[i]=v[i]/10;
}
if(v[i]==7)
printf("%d ",copieV[i]);
}
getch();
break;
case 'H':
for(i=0; i<n; i++,s=0)
{
while(v[i])
{
s=s+v[i]%10;
v[i]=v[i]/10;
suma[i]=s;
}
printf("%d ",suma[i]);
}
getch();
break;
case 'I':
for(i=0; i<n; i++)
{
while (v[i]>99)
{
v[i]/=10;
}
printf("(%d%10)*(%d/10)=%d\n",v[i],v[i],(v[i]%10)*(v[i]/10));
}
case 'J':
for(i=0; i<n; i++)
{
if(v[i]%10==v[i]/10%10)
{
printf("%d ",v[i]);
}
v[i]/=10;
}
getch();
break;
case 'X':
exit(0);
default:
printf("\nOptiune invalida!\n");
getch();
}
}
while(1);
return 0;
}
int* citire_vector(int *dim)
{
int i, *x;
printf("Dati numarul de elemente:");
scanf("%d", dim);
x = (int*)malloc(sizeof(int)*(*dim));
if(x==NULL)
{
printf("Eroare la alocare memoriei...");
return;
}
printf("Introduceti elementele vectorului:\n");
for(i=0; i<*dim; i++)
{
printf("x[%d]=",i);
scanf("%d",&x[i]);
}
return x;
}
char* afisare_vector(int dim, int x[])
{
int i;
char *output, sir[10];
output = (char*)malloc(sizeof(char)*80);
strcpy(output,"\nVectorul este: ");
for(i=0; i<dim; i++)
{
sprintf(sir,"%d, ", x[i]);
strcat(output,sir);
}
sprintf(sir,"\b\b.\n");
strcat(output,sir);
return output;
}
char *vector_invers(int dim,int x[])
{
int i;
char *output, sir[10];
output = (char*)malloc(sizeof(char)*80);
strcpy(output,"\nVectorul invers este: ");
for(i=dim; i>=0; i--)
{
sprintf(sir,"%d, ", x[i]);
strcat(output,sir);
}
sprintf(sir,"\b\b.\n");
strcat(output,sir);
return output;
}
Explicație:
aici este rezolvarea la vectori . o mica problema problema este in C si nu in c++