Documente Academic
Documente Profesional
Documente Cultură
1.
/*
Sa se scrie un program care citeste de la tastatura un sir de caractere folosind pointeri si sa se afiseze
sirul obtinut prin eliminarea caracterelor care se repeta in sir.
*/
#include <stdio.h>
#include <string.h>
#define DIM 20
void eliminare (char *p);
void main(){
int i;
char p[DIM];
printf("\nDati sirul de caractere: ");
scanf("%s", p);
eliminare (p);
printf("\nSirul de caractere dupa eliminarea caracterelor: ");
for (i=0;i<strlen(p);i++)
printf("%c", *(p+i));
printf("\n");
}//end main
void eliminare (char *p)
{
int i, j, k;
for (i=0;i<strlen(p)-1;i++)
for (j=i+1;j<strlen(p);j++)
2.
/*
Sa se scrie un program care citeste de la tastatura 2 siruri de caractere si sa se afiseze numarul de
caractere prin care difera cele doua siruri (numarul de caractere care exista in primul si nu exista in al
doilea + numarul de caractere care exista in al doilea si nu exista in primul). Folositi pointeri pentru
accesul la elementele tablourilor.
*/
#include <stdio.h>
#include <string.h>
#define DIM 20
void eliminare (char *p);
int diferenta (char *p1, char *p2);
void main(){
char p1[DIM], p2[DIM];
int nr;
printf("\nDati primul sir de caractere: ");
scanf("%s", p1);
printf("\nDati al doilea sir de caractere: ");
scanf("%s", p2);
eliminare (p1);
eliminare (p2);
nr= diferenta(p1, p2) + diferenta (p2, p1);
}//enfor
return nr;
}//end diferenta
3.
/*
Sa se scrie un program C/C++ care citeste elementele a doi vectori de intregi si afiseaza produsul scalar
al acestora. Se va folosi o functie care citeste elementele de la tastatura si o functie care calculeaza
produsul scalar, ambele vor utiliza pointeri. Citirea numarului de elemente ale tabloului si afisarea
rezultatului se va face in functia main().
*/
#include <stdio.h>
#define DIM 20
void citire (int *p, int n);
int prod_scalar (int *p1, int *p2, int n);
void main(){
int p1[DIM], p2[DIM], n;
printf("\nDati dimensiunea vectorului: ");
scanf("%d", &n);
if (n>DIM)
{
printf("\nDimensiune prea mare!\n");
return;
}//endif
printf("\nDati elementele primului vector: \n");
citire (p1, n);
printf("\nDati elementele din al doilea vector: \n");
4.
/*
Sa se scrie o aplicatie C/C++ in care se genereaza aleator 20 de numere intregi cu valori mai mici decat
50. Sa se scrie o functie care elimina din sirul creat numerele impare. Functia utilizeaza pointeri. Afisati
in main() sirul initial si cel obtinut prin eliminare.
*/
#include <stdio.h>
#define MAX 50
void eliminare (int *p, int &nr);
void main(){
int p[20], i, nr=0;
printf("\nDati elementele vectorului:\n");
for (i=0;i<20;i++)
{
printf("\tp[%d]= ", i+1);
scanf("%d", p+i);
}//endfor
for (i=0;i<20;i++)
if ((*(p+i)) > 50)
{
printf("\nUn numar> 50!!\n");
return;
}//endif
printf("\nVectorul initial a fost: \n");
for (i=0;i<20;i++)
printf("%d ", *(p+i));
eliminare(p, nr);
printf("\nVectorul final este: \n");
for (i=0;i<nr;i++)
printf("%d ", *(p+i));
printf("\n");
}//endmain
void eliminare (int *p, int &nr)
{
int i;
for (i=0;i<20;i++)
if (((*(p+i)) % 2) == 0)
{
*(p+nr) = *(p+i);
nr++;
}
}//end eliminare
5.
/*
Sa se scrie un program C/C++ in care se citesc de la tastatura numere reale, ce vor fi stocate intr-un
tablou unidimensional. Sa se scrie o functie care copiaza intr-un alt vector valorile din primul tablou mai
mari decat valoarea medie a numerelor din acesta. Se vor folosi pointeri si se vor afisa in main() valorile
din cei doi vectori.
*/
#include <stdio.h>
#define DIM 20
void citire (float *p, int n);
void copiere (float *p1, int n, float *p2, int &m);
void main(){
float p1[DIM], p2[DIM];
int i, n, m=0;
{
int i;
float med, nr=0, sum=0;
for (i=0;i<n;i++)
{
sum+=*(p1+i);
nr++;
}//endfor
med = sum/nr;
for (i=0;i<n;i++)
if ((*(p1+i)) > med)
{
*(p2+m) = *(p1+i);
m++;
}//endif
printf("\nElementele vectorului al doilea sunt: \n");
for (i=0;i<m;i++)
printf("%.2f ", *(p2+i));
printf("\n");
}//end copiere
6.
/*
Sa se scrie o aplicatie C/C++ care citeste de la tastatura un sir de caractere. Sa se scrie o functie care
afiseaza caracterele ce compun sirul si numarul de aparitii ale fiecaruia. Folositi pointeri.
*/
#include <iostream>
#include <conio.h>
using namespace std;
void numarare (char *p_sir, int n);
void main()
{
char v[50], *p_sir;
int k=0, n, i;
cout<<"\nDati dimensiunea: ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"\nDati elementele sirului de caractere: ";
cin>>v[i];
}//endfor
p_sir=v;
cout<<"\nSirul de caractere este: ";
for (i=0;i<n;i++)
cout<<*(p_sir+i)<<" ";
numarare (p_sir, n);
getch();
}//endmain
void numarare (char *p_sir, int n)
{
int i,j,x;
for (i=0;i<n;i++)
{
x=0;
for (j=0;j<n;j++){
if (*(p_sir+i)==*(p_sir +j))
x++;
}//endfor
cout<<"\nElementul "<<*(p_sir+i)<<" apare de"<< x<<" ori."<<endl;
}//endfor
}//end numarare