de tras la imprimanta laborator progamare

14
PAUN ALEXANDRU Grupa C

Upload: fara-nume

Post on 14-Aug-2015

13 views

Category:

Documents


1 download

DESCRIPTION

programare labirator

TRANSCRIPT

Page 1: De Tras La Imprimanta Laborator Progamare

PAUN ALEXANDRU

Grupa C

Laborator 1: Probleme diverse

Page 2: De Tras La Imprimanta Laborator Progamare

Sa se calculeze c.m.m.d.c. si c.m.m.m.c. a N numere intregi.

#include "stdafx.h"#include <conio.h>

void main(){int a ,b,cmmdc,cmmmc,x,y;

printf("\n a= ");scanf_s("\n %d",&a);

printf("\n b= ");scanf_s("\n %d",&b);

x = a;y = b;

while(x != y){if(x>y) x = x - y; else y = y - x;

}

cmmdc = x;cmmmc = (a * b)/cmmdc;

printf("\n cmmdc = %d",cmmdc);printf("\n cmmmc = %d",cmmmc);

_getch();}

Laborator 2: Tabelari

Page 3: De Tras La Imprimanta Laborator Progamare

Sa se calculeze functia:

#include "stdafx.h"#include "math.h"#include "conio.h"

void main(){

printf("*******************\n");printf("* * *\n");

printf("* n * sqrt(n) *\n");printf("* * *\n");printf("*******************\n");

float n = 0, delta = 0.25;

while(n <= 20){if(n < 20) printf("\n* %.3f * %.3f *",n,sqrt(n));if(n == 20) {

printf("\n* %.3f * %.3f *",n,sqrt(n));printf("\n********************" );

}

n += delta;}

_getch();

}

Laborator 3: Dezvoltari in serie

Page 4: De Tras La Imprimanta Laborator Progamare

Sa se calculeze folosind dezvoltarea in serie Taylor cu o precizie EPS data:

arctg(x) = x1

+ x3

3+ x

5

5 - … orice x apartine lui R.

#include "stdafx.h"#include "math.h"#include "conio.h"#define EPS 0.0001

void main(){

float x,s,T,gr,ch(alfa),alfa;int i;

printf("\n dati nr de grade =");scanf("\n %f", &gr);

x = 1/2 * (exp(2) + exp(2));s = 1;T = 1;i = 2;

do{T = -T * pow(x,2)/i/(i - 1);s = s + T;i = i + 2;

}while(fabs(T) > EPS);

printf("\n alfa grade =");scanf("\n %f", &alfa);printf("\n cos(%f) = %f", alfa, ch("alfa"));

_getch();}

Laborator 4: Probleme matematice

Page 5: De Tras La Imprimanta Laborator Progamare

Sa se realizeze un program care determina unghiul dintre doua drepte date prin ecuatiile lor.

#include "stdafx.h"#include "conio.h"#include <math.h>

#define PI 3.14159265

void main(){ float x1,x2,y1,y2;

//Dreapta 1printf("Coordonatele pentru prima dreapta:");printf("\n\nx1 = ");scanf_s("%f", &x1);printf("y1 = ");scanf_s("%f", &y1);printf("x2 = ");scanf_s("%f", &x2);printf("y2 = ");scanf_s("%f", &y2);float m1 = (y2 - y1)/(x2 - x1);printf("panta m1 este %0.2f",m1);

printf("\n\n***********************************");

//Dreapta 2printf("\n\nCoordonatele pentru a doua dreapta:");printf("\n\nx1 = ");scanf_s("%f", &x1);printf("y1 = ");scanf_s("%f", &y1);printf("x2 = ");scanf_s("%f", &x2);printf("y2 = ");scanf_s("%f", &y2);float m2 = (y2 - y1)/(x2 - x1);printf("panta m2 este %0.2f",m2);

float rad = (m1 + m2)/(1 - (m1 * m2)); float unghi = atan(rad) * 180 / PI;

printf("\n\n_________________________________________________");printf("\n\nUnghiul dintre cele doua drepte este %.2f grade.",unghi);printf("\n\n_________________________________________________");

_getch();}

Laborator 5: Tablouri numerice unidimensionale

Page 6: De Tras La Imprimanta Laborator Progamare

Sa se calculeze valoarea derivatei de ordinul intai a unui polinom de grad n intr-un punct x dat.

#include "stdafx.h"#include <conio.h> double polinom(double *nr, int d, double x){ int i; double rezultat = 0.0; for(i = d-1; i >= 0; i--) { rezultat = rezultat * x + nr[i]; } return rezultat;} void main(){ double nr[] = { 23.0, 3.0, 3.4, 1.0 }; printf("f(x) = %5.1f\n", polinom(nr, sizeof(nr)/sizeof(double), 2.0));

_getch();}

Laborator 6: Tablouri numerice bidimensionale

Sa se parcurga in spirala in sens orar o matrice patratica NxN cu elemente numere intregi.

#include <stdio.h>#include <stdafx.h>

Page 7: De Tras La Imprimanta Laborator Progamare

#include <conio.h>

int main(){

int A[100][100]; int n, m, i, j;

printf("Numarul de linii si de coloane este "); scanf_s("%d",&n);

m = n;

for (i=1;i<=n;i++) for (j=1;j<=m;j++) A[i][j]==0;

int X = m*n; int o=1,p=1,r=n,t=m,Z=1,q=1;

while (q<X) {

if (m==1) for (i=1;i<=n;i++) {A[i][1] = Z; Z++; q++;}if (n==1) for (i=1;i<=m;i++) {A[1][i] = Z; Z++; q++;}

if (q<X) for (i=p;i<=t;i++) {A[p][i] = Z; Z++; q++;}o++;

if (q<X) for (i=o;i<=r;i++) {A[i][t] = Z; Z++; q++;}t--;

if (q<X) for (i=t;i>=p;i--) {A[r][i] = Z; Z++; q++;}r--;

if (q<X) for (i=r;i>=o;i--) {A[i][p] = Z; Z++; q++;}p++;

}

if (m==n) if (m%2) if (n%2) A[m/2+1][n/2+1] = Z;

for (i=1;i<=n;i++) { for (j=1;j<=m;j++) printf("%d \n",A[i][j]); }

_getch();}

Laborator 7: Prelucrari alfanumerice

Se considera un text terminat prin punct intr-un fisier extern de tip text. Se cere sa se contorizeze numarul de aparitii a fiecarei secvente „abaa” in text.

Page 8: De Tras La Imprimanta Laborator Progamare

#include "stdafx.h"#include "string.h"#include "stdio.h"#include "conio.h"

int replace(std::string& str, const std::string& from, const std::string& to) {

size_t start_pos = 0;

while((start_pos = str.find(from, start_pos)) != std::string::npos) {

size_t end_pos = start_pos + from.length(); str.replace(start_pos, end_pos, to); start_pos += to.length();

}}

void main(){

int nr;char text[20];

printf("\n Inserati un text ce contine sirul de caractere \"abaa\" ");gets_s(text);

if(strstr(text, "abaa")) {

nr++;replace(text,"abaa","test");

}else {

printf("Cuvantul \"abaa\" a fost gasit de %d ori",nr);}

_getch();}

Laborator 8: Functii

Sa se studieze folosind o functie cu ajutorul schemei lui Horner,divizibilitatea polinomului P(x) de grad n prin (X-alfa).

#include "stdafx.h"

Page 9: De Tras La Imprimanta Laborator Progamare

#include <stdio.h>#include <conio.h> double Horner(double *coeficienti, int s, double x){ int i; double rezultat = 0.0; for(i = s-1; i >= 0; i--) { rezultat = rezultat * x + coeficienti[i]; } return rezultat;} void main(){ double coeficienti[] = { -19.0, 7.0, -4.0, 6.0 }; printf("P(x) = %5.1f\n", Horner(coeficienti, sizeof(coeficienti)/sizeof(double), 3.0)); _getch();}

Laborator 9: Probleme cu fisiere

Sa se creeze un fisier care sa gestioneze un depou de locomotive:

- cod locomotiva;- an fabricatie;- numar defectiuni;

Page 10: De Tras La Imprimanta Laborator Progamare

Sa se implementeze urmatoarele operatii: creare fisier, adaugare/modificare locomotiva, stergere locomotiva, cautare locomotiva, afisare date din depou. Sa se afiseze toate locomotivele care nu au avut nici o defectiune in ordine crescatoare dupa anul de fabricatie.

#include "stdafx.h"#include "conio.h"#include "ctype.h"#include "string.h"

typedef struct{char cod_locomotiva[20];int an_fabricatie,numar_defectiuni;

}depou;

FILE *f;depou m;char ch;void creareFisier(){ char ch;f=fopen("depou.txt","wt");if(f==NULL){printf("Nu se gaseste fisierul.");}ch=getch();

do{printf("\n Cod locomotiva : ");scanf("%s",&m.cod_locomotiva);printf("\n An fabricatie : ");scanf("%d",m.an_fabricatie);printf("\n Numar defectiuni : ");scanf("%d",&m.numar_defectiuni);fprintf(f,"%s",m.cod_locomotiva);fprintf(f,"%d",m.an_fabricatie);fprintf(f,"%d",m.numar_defectiuni);fprintf(f,"\n");printf("\n Mai sunt locomotive?(n/N)");scanf("%c",ch);

}while((ch!='n')&&(ch!='N'));fclose(f);

}void afisareFisier(){

int i;f=fopen("depou.txt","rt");if(f==NULL){printf("Nu se gaseste fisierul.");}i=0;while(!feof(f)){ i++;printf("\n Locomotivele",i,"sunt");fscanf(f,"%s",&m.cod_locomotiva);fscanf(f,"%d",&m.an_fabricatie);fscanf(f,"%d",&m.numar_defectiuni);printf("\n Cod locomotiva : %s",m.cod_locomotiva);printf("\n An fabricatie : %d",m.an_fabricatie);printf("\n Numar defectiuni : %d",m.numar_defectiuni); }fclose(f);

}void adaugareFisier(){

char ch;f=fopen("depou.txt","wt");fseek(f,0,SEEK_END);do{printf("\n Cod locomotiva : ");scanf("%s",&m.cod_locomotiva);printf("\n An fabricatie : ");scanf("%d",m.an_fabricatie);printf("\n Numar defectiuni : ");scanf("%d",&m.numar_defectiuni);

fprintf(f,"%s",m.cod_locomotiva);fprintf(f,"%d",m.an_fabricatie);fprintf(f,"%d",m.numar_defectiuni);printf("\n Mai sunt locomotive de pus?(n/N)");ch=getchar(); }while((ch!='n')&&(ch!='N')); fclose(f); }

void modificareFisier(){char cod_locomotiva[20];int v,k;do{

printf("\n Cod locomotiva : ");

Page 11: De Tras La Imprimanta Laborator Progamare

scanf("%s",&cod_locomotiva);f = fopen("depou.txt","rt");v = 0;while(!feof(f)&&(v == 0)){

fscanf(f,"%s",&m.cod_locomotiva);fscanf(f,"%d",m.an_fabricatie);fscanf(f,"%d",&m.numar_defectiuni);if(cod_locomotiva == m.cod_locomotiva){

printf("\n Cod locomotiva : ");scanf("%s",&m.cod_locomotiva);printf("\n An fabricatie : ");scanf("%d",m.an_fabricatie);printf("\n Numar defectiuni : ");scanf("%d",&m.numar_defectiuni);fprintf(f,"%s %d %d\

n",m.an_fabricatie,m.cod_locomotiva,m.numar_defectiuni); } }if(v == 0) printf("\n Locomotiva nu se afla in baza de date!"); else k = 1;fclose(f);

}while(k == 0);}void stergereFisier(){ char cod_locomotiva[20];

int n,v,k;

FILE *f1;printf("\n Cod locomotiva : ");scanf("%d",&cod_locomotiva);f=fopen("depou.txt","rt"); n=0;while(!feof(f)){

fscanf(f,"%s",&m.cod_locomotiva);fscanf(f,"%d",m.an_fabricatie);

fscanf(f,"%d",&m.numar_defectiuni);n++;

}fseek(f,0,SEEK_SET);f1=fopen("stergere.txt","wt");v=0;k=0;while(v < n-1){

fscanf(f,"%s",&m.cod_locomotiva);fscanf(f,"%d",m.an_fabricatie);fscanf(f,"%d",&m.numar_defectiuni);if(cod_locomotiva != m.cod_locomotiva){

fprintf(f1,"%s",m.cod_locomotiva);fprintf(f1,"%d",m.an_fabricatie);fprintf(f1,"%d",m.numar_defectiuni);k++; }

v++; }if(k==n-1)printf("\n Locomotiva cu codul :%d nu exista",cod_locomotiva);fclose(f);fclose(f1);remove("depou.txt");rename("stergere.txt","depou.txt"); }

void main(){char c;

do{ printf("\n 1) Creare fisier\n 2) Afisare locomotive\n 3) Adaugare locomotiva\n 4) Modificare locomotiva informatii\n 5) Stergere locomotiva\n\n");

c = getchar();

switch(c){ case'1':creareFisier();break;case'2':afisareFisier();break;case'3':adaugareFisier();break;case'4':modificareFisier();break;case'5':stergereFisier();break; }

}while(c!='0');_getch();

}

Laborator 10: Probleme recapitulative

Se dau n dreptunghiuri definite prin coltul din stanga sus si dreapta jos.Sa se calculeze aria obtinuta prin reunirea celor n dreptunghiuri.

#include "stdafx.h"#include "conio.h"

Page 12: De Tras La Imprimanta Laborator Progamare

#include <math.h>

void main(){

float n; float w[10],h[10],aria = .0,x[10],y[10];

//Dreapta 1printf("Cate dreptunghiuri doriti sa creati?");printf("\nn = ");scanf_s("%f", &n);

for(int i = 1;i <= n;i++){

printf("\nDreptunghiul %d \n",i);printf("lungimea = ");scanf_s("%f", &w[i]);printf("latime = ");scanf_s("%f", &h[i]);

printf("x = ");scanf_s("%f", &x[i]);printf("y = ");scanf_s("%f", &y[i]);

}

for(int i = 1;i <= n;i++){

if(y[i] + h[i] < y[i+1] || y[i] > y[i+1] + h[i+1] || x[i] + w[i] < x[i+1] || x[i] > x[i+1] + w[i+1])

{aria = aria + w[i] * h[i];

}

if(i == n){

printf("\n\nAria obtinuta prin reunirea celor %0.f dreptunghiuri este %2.f",n,aria);

}}

_getch();}