Sunteți pe pagina 1din 15

PORTOFOLIU PCLP – SEM II

10. Scrieți un program care va citi de la tastatură un număr întreg și va afișa pe ecran
numărul respectiv de linii paralele, echidistante:
- Verticale, în cadranul (1/4 din ecran) dreapta sus
- Diagonale
#include <windows.h> // nu se copiaza pe linux

#include <GL/glut.h>

#include<stdio.h>

int nr;

void display() {

glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0f, 0.0f, 1.0f);

int i;

//verticale

for(i=0; i<nr; i++){

glBegin(GL_LINES);

glVertex2f(0.2+i*0.1, 0);

glVertex2f(0.2+i*0.1, 0.2f);

//diagonale

for(i=0; i<nr; i++){

glBegin(GL_LINES);

glVertex2f(0.2+i*0.2, 0);

glVertex2f(0, 0.2+i*0.2);

glEnd();
glFlush();}

int main(int argc, char** argv) {

printf("Introdu nr de linii: ");

fflush(stdout);

scanf("%d", &nr);

glutInit(&argc, argv);

glutInitWindowSize(320, 320);

glutInitWindowPosition(50, 50);

glutCreateWindow("Linii");

glutDisplayFunc(display);

glutMainLoop();

return 0;

9. Utilizati recursivitatea pentru a afisa numerele de la 1 la n(n citit de la tastatura)


#include<stdio.h>

void rec(int n){

if(n>0){ rec(n-1);

printf("%d ", n);

int main(){

int n;

printf("Introdu n: ");

fflush(stdout);

scanf("%d", &n);

fflush(stdout);

printf("Nr. de la 1 la %d sunt: ", n);


rec(n);

return 0;

8. Realizati un program care va determina daca un nr introdus de la testatura este


palindrom.
#include <stdio.h>

int main() {

int numar, palindrom = 0, copieNumar;

printf("Introduceți un număr: ");

fflush(stdout);

scanf("%d", &numar);

copieNumar = numar; // Copiem numărul pentru a-l putea compara mai târziu

do {

int ultimaCifra = numar % 10;

palindrom = palindrom * 10 + ultimaCifra;

numar /= 10;

} while (numar != 0);

if (copieNumar == palindrom) {

printf("Numărul este palindrom.\n");

} else {

printf("Numărul nu este palindrom.\n");

return 0;

7. Realizati un program care va contine functii utilistor pentru sortarea unui


vector.
#include<stdio.h>
void sortare(int v[], int l){

int i, j, schimba;

for (i = 0; i < l - 1; i++) {

for(j=0; j<l-1-i; j++){

if(v[j]>v[j+1])

schimba = v[j];

v[j] = v[j+1];

v[j+1] = schimba;

int main(){

int n, i;

int v[50];

printf("Introduceti nr de elementel: ");

fflush(stdout);

scanf("%d", &n);

fflush(stdout);

printf("Introdu elem vect: ");

fflush(stdout);

for(i=0; i<n; i++){

scanf("%d", &v[i]);

fflush(stdout);

printf("Vectorul initial este: ");

for(i=0; i<n; i++){


printf("%d ", v[i]);

printf("\nVectorul spprtat este: ");

sortare(v, n);

for(i=0; i<n; i++){

printf("%d ", v[i]);}

return 0;

6. Se consideră un fișier de date care conține valorile mediilor unor studenți. Să se scrie
un program care va afișa media generală a studenților (media numerelor din fișier). În
fișier nu se găsește numărul mediilor.

#include<stdio.h>

int main(){

int i, n, nr=0;

float medii, medie, suma=0;

FILE *f;

f = fopen("medii.txt", "r");

if(f == NULL) {printf("Fisierul nu exista.");}

while(!feof(f)){

fscanf(f, "%f", &medii);

fflush(stdout);

printf("%.2f ", medii);

suma += medii;

nr++;

medie = (float)suma/nr;

printf("\nMedia mediilor din fisier este %.2f", medie);


return 0;

5. Scrieti un program care afiseaza primele 25 de nr din sirul lui Fibonacci si media lor.
#include <stdio.h>

int main() {

int n = 25, primul = 0, al_doilea = 1, urmat, suma = 0;

float medie;

printf("Primele 25 numere din şirul Fibonacci sunt:\n");

for (int i = 0; i < 25; i++) {

if (i <= 1) {

urmat = i;

} else {

urmat = primul + al_doilea;

primul = al_doilea;

al_doilea = urmat;

suma += urmat;

printf("%d\n",urmat);

medie = (float)suma/25;

printf("Media numerelor este: %.2f", medie);

return 0;

4. Considerând numele de familie a trei studenți să se scrie un program care va citi de la


tastatură datele și va afișa studenții în ordine alfabetică. Programul va modifica toate datele
introduse astfel încât doar prima literă să fie majusculă.

#include<stdio.h>
#include<string.h>

int main(){

char nume1[30], nume2[30], nume3[30];

char schimba[30];

printf("Introduceti numele: ");

fflush(stdout);

scanf("%s%s%s", nume1, nume2, nume3);

fflush(stdout);

//adica dacs nume 1 > lex decat nume2 le schimba

if(strcmp(nume1, nume2)>0){

strcpy(schimba, nume1);

strcpy(nume1, nume2);

strcpy(nume2, schimba);

if(strcmp(nume2, nume3)>0){

strcpy(schimba, nume2);

strcpy(nume2, nume3);

strcpy(nume3, schimba);

if(strcmp(nume1, nume2)>0){

strcpy(schimba, nume1);

strcpy(nume1, nume2);

strcpy(nume2, schimba);

if(nume1[0] >= 'a' && nume1[0] <= 'z'){

nume1[0] = nume1[0] - 32;

if(nume2[0] >= 'a' && nume2[0] <= 'z'){


nume2[0] = nume2[0] - 32;

if(nume3[0] >= 'a' && nume3[0] <= 'z'){

nume3[0] = nume3[0] - 32;

printf("%s %s %s",nume1, nume2, nume3);

return 0;

CONSOLA 1
Introduceti numele: Bianca mihai alex

Bianca Alex Mihai

CONSOLA2
Introduceti numele: mihai Bianca Alex

Alex Bianca Mihai

3. Să se creeze în mod dinamic spațiu pentru un tablou cu 6 elemente de tip float și să


se atribuie valori impare fiecărui element.
#include<stdio.h>

#include<stdlib.h>

int main(){

int i, j;

float **matrice;

int m, n; //linii coloane

float valoare;

printf("Introduceti nr de linii si de coloane: ");

fflush(stdout);

scanf("%d%d", &m, &n);


matrice = (float**)malloc(m * sizeof(float*));

for (i = 0; i < m; i++) {

matrice[i] = (float*)malloc(n * sizeof(float));

fflush(stdout);

printf("Introduceti prima valoare: ");

fflush(stdout);

scanf("%f", &valoare);

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

matrice[i][j] = valoare;

valoare += 2;

printf("Matricea:\n");

for (i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

printf("%.2f ", matrice[i][j]);

printf("\n");

return 0;

CONSOLA 1

Introduceti nr de linii si de coloane: 2 3

Introduceti prima valoare: 2.85

Matricea:
2.85 4.85 6.85

8.85 10.85 12.85

CONSOLA 2
Introduceti nr de linii si de coloane: 3 2

Introduceti prima valoare: 6.3

Matricea:

6.30 8.30

10.30 12.30

14.30 6.30

1. Considerăm următoarea secvență de program:

struct persoana
{
char nume[21];
struct nastere
{
int an,zi;
char luna[11] ;
} dn;
struct adresa
{
char localitatea[21];
char strada[11];
int numar;
}adr;
int varsta;
};

Utilizați variabila de tip struct persoana pentru a salva datele a n persoane (numele,
data nașterii și adresa), calculați vârsta fiecărei persoane și afișați numele și strada pe
care locuiesc persoanele în ordinea crescătoare a vârstei.

#include<stdio.h>

struct persoana

char nume[21];

struct nastere

{
int an,zi;

char luna[11] ;

}dn;

struct adresa

char localitatea[21];

char strada[11];

int numar;

}adr;

int varsta;

};

int main(){

int n, i, j, schimba;

struct persoana *p;

printf("Introduceti nr de persoane: ");

fflush(stdout);

scanf("%d", &n);

for(i = 0; i < n; i++){

printf("\nIntroduceti numele persoanei: ");

fflush(stdout);

scanf("%s", p[i].nume);

fflush(stdout);

printf("\nIntroduceti anul, luna si ziua nasterii: ");

fflush(stdout);

scanf("%d%s%d", &p[i].dn.an, p[i].dn.luna, &p[i].dn.zi);

fflush(stdout);

printf("\nIntroduceti localitatea, strada si numarul: ");

fflush(stdout);
scanf("%s%s%d", p[i].adr.localitatea, p[i].adr.strada, &p[i].adr.numar);

fflush(stdout);

p[i].varsta = 2023 - p[i].dn.an;

for(i = 0; i < n-1; i++)

for(j=0; j<n-1-i; j++){

if(p[i].varsta > p[j].varsta){

schimba = p[i].varsta;

p[i].varsta = p[j].varsta;

p[j].varsta = schimba;

printf("persoane ord cresc varsta: ");

for(i=0; i<n; i++){

printf("%s %d %s\n", p[i].nume, p[i].varsta, p[i].adr.strada);

return 0;

CONSOLA 1

Introduceti nr de persoane: 2

Introduceti numele persoanei: bianca

Introduceti anul, luna si ziua nasterii: 2003 septembire 2

Introduceti localitatea, strada si numarul: slanic_moldova laurilor 16

Introduceti numele persoanei: alex

Introduceti anul, luna si ziua nasterii: 2002 ianuarie 22

Introduceti localitatea, strada si numarul: onesti republicii 45

persoane ord cresc varsta: bianca 20 laurilor


alex 21 republicii

CONSOLA 2

Introduceti nr de persoane: 2

Introduceti numele persoanei: mihaela

Introduceti anul, luna si ziua nasterii: 1989 august 5

Introduceti localitatea, strada si numarul: slanic_moldova providentei 5

Introduceti numele persoanei: denisa

Introduceti anul, luna si ziua nasterii: 1978 iulie 9

Introduceti localitatea, strada si numarul: targu_ocna sperantei 8

persoane ord cresc varsta: mihaela 34 providentei

denisa 45 sperantei

1. Sa se citeasca un vector de numere intregi si sa se afiseze:


- cate numere sunt pare
- cate numere sunt peste valoarea medie
- afisarea elementelor mai mari decat media
- afisarea elementelor care se afla intr-un anumit interval (Vmin-Vmax) citit de la
tastatura

#include<stdio.h>

int main(){

int i, v[50], n, pare=0, peste_Medie=0, suma=0;

int vmin, vmax;

float medie;

printf("Nr. de elem: ");

fflush(stdout);

scanf("%d", &n);

fflush(stdout);

printf("Introduceti elem: ");

fflush(stdout);
for(i=0; i < n; i++)

scanf("%d", &v[i]);

fflush(stdout);

printf("Elementele vectorului sunt: ");

for(i = 0; i < n; i++)

printf("%d ", v[i]);

printf("\nIntroduceti vmin si vmax: ");

fflush(stdout);

scanf("%d%d", &vmin, &vmax);

fflush(stdout);

printf("Elementele cuprinse in interval sunt: ");

for(i = 0; i < n; i++){

if(v[i]%2==0) pare++;

suma += v[i];

if(v[i] >= vmin && v[i] <= vmax) printf("%d ", v[i] );

medie = (float)suma/n;

for(i = 0; i < n; i++){

if(v[i] > medie) peste_Medie++;

printf("\nNr. pare: %d\nValoarea medie: %.2f\nNr. peste medie: %d", pare,


medie, peste_Medie);

return 0;

CONSOLA 1

Nr. de elem: 3

Introduceti elem: 1 2 3
Elementele vectorului sunt: 1 2 3

Introduceti vmin si vmax: 0 9

Elementele cuprinse in interval sunt: 1 2 3

Nr. pare: 1

Valoarea medie: 2.00

Nr. peste medie: 1

CONSOLA 2

Nr. de elem: 6

Introduceti elem: 100 23 99 66 78 95

Elementele vectorului sunt: 100 23 99 66 78 95

Introduceti vmin si vmax: 60 100

Elementele cuprinse in interval sunt: 100 99 66 78 95

Nr. pare: 3

Valoarea medie: 76.83

Nr. peste medie: 4

S-ar putea să vă placă și