Documente Academic
Documente Profesional
Documente Cultură
1. Operaii cu caractere
2. Proprieti ale numerelor
3. Divizibilitate
4. Numere prime
5. Operaii pe bii
6. iruri de caractere
7. Operaii cu vectori
8. Operaii cu matrici
9. Operaii cu structuri
Aplicaii
Operaii cu caractere
// Se citeste de la tastatura o secventa formata din maxim
// 100 de litere mici, pana la intalnirea caracterului punct
// Daca exista in secventa citita litere alaturate egale, aceste
// litere vor fi eliminate
// Daca in urma eliminarii se obtin din nou litere alaturate
// egale, se elimina si acestea, eliminarile efectuandu-se
// pana cand in secventa nu exista litere alaturate egale.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define NMAX 100
int main() {
char s[NMAX], c;
int n, i, j, k, schimb=1;
n=0; // numarul de litere din secventa
Aplicaii
Operaii cu caractere
printf("Introduceti secventa de litere, terminata cu .\n");
do {
c=getchar();
if (c != '. && islower(c) && n<NMAX) s[n++]=c; }
while (c !='. && n<NMAX);
while (schimb) {
for (schimb=i=0; i<n-1; )
if (s[ i ] == s[i+1]) {
// incepe o secventa de litere egale
// determin sfarsitul acestei secvente
for (j=i+1; j<n && s[ j ]==s[ i ]; j++) ;
Aplicaii
Operaii cu caractere
// elimin secventa
for (k=j; k<n; k++) s[i+k-j]=s[k] ;
// actualizez numarul de elemente
n -= j i;
schimb=1; }
else i++; //trec mai departe
}
for(i=0; i<n; i++ ) printf("%c", s[i]);
system("pause");
return 0;
}
Aplicaii
Proprieti ale numerelor
// Se numesc numere "bine ordonate" acele numere
//care au cifrele in ordine strict crescatoare
#include <stdio.h>
#include <stdlib.h>
int main() {
int c1, c2, c3;
//Generare numere "bine ordonate crescator" cu trei cifre
printf("Numere bine ordonate crecator\n");
for (c1=1; c1<8; c1++)
for (c2=c1+1; c2<9; c2++)
for (c3=c2+1; c3<10; c3++)
printf("%d%d%d ", c1,c2,c3);
printf("\n");
Aplicaii
Proprieti ale numerelor
// Generare numere "bine ordonate descrescator"
// cu trei cifre
#include <stdio.h>
#include <stdlib.h>
int main() {
unsigned n, x, d, nr, i, oricare=1;
scanf("%u", &n);
Aplicaii
Divizibilitate
for(i=1; i<=n && oricare; i++) {
scanf("%u", &x);
nr=0; /* nr. de divizori primi ai lui x */
d=2;
while (x>1) {
if (x%d==0) { /* d este divizor */
nr++;
/* se elimina d din x, prin impartiri repetate */
while (x % d == 0) x /= d; }
d++; } /* se cauta alt divizor */
if (nr % 2 == 0) oricare=0; }
if (oricare) printf("DA\n");
else printf ("NU\n");
system("pause");
return 0;
}
Aplicaii
Numere prime
// CIURUL LUI ERATOSTENE
// Fie n un numar natural (n<=10000).
// Sa se genereze toate numerele prime mai mici decat n.
#include<stdio.h>
#include <stdlib.h>
#define NMAX 10000
int main() {
int ciur[NMAX], n, i, j;
printf("n(<10000) ="); scanf("%d", &n);
Aplicaii
Numere prime
void afisare()
{
int i,j;
for (i=0; i<n; i++){
printf("%-30s", s[ i ].nume);
for (j=0; j<4; j++)
printf(" %2d",s[ i ].note[ j ]);
printf("%8.2f\n",s[ i ].media);
}
}
Aplicaii
Operaii cu structuri
void sortare_alf()
{ int i,j, ok;
struct student aux;
do {
for(i=0, ok=1; i<n-1; i++)
if (strcmp(s[ i ].nume, s[i+1].nume)>0) {
aux=s[ i ];
s[ i ]=s[i+1];
s[i+1]=aux;
ok=0;
}
} while (!ok);
}
Aplicaii
Operaii cu structuri
void afis_nepromovati()
{
int i, j;
for (i=0; i<n; i++){
if(s[ i ].media<5.0) {
printf("%-30s", s[ i ].nume);
for (j=0; j<4; j++)
printf(" %2d",s[ i ].note[ j ]);
printf("%8.2f\n",s[ i ].media);
}
}
}
Aplicaii
Operaii cu structuri
int main() {
citire();
printf("Datele studentilor\n");
afisare();
printf("\nStudentii in ordine alfabetica\n");
sortare_alf();
afisare();
printf("\nStudentii nepromovati\n");
afis_nepromovati();
system("pause");
return 0;
}