Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Probleme recapitulative

c



+ Font mai mare | - Font mai mic



Probleme recapitulative

Probleme rezolvate

P10.1 Scrieti un program care sa calculeze si sa afiseze, in functie de optiunea utilizatorului, urmatoarele marimi pentru un cilindru cu raza bazei si inaltimea date (numere reale): aria bazei, circumferinta cercului de baza si volumul cilindrului; programul va fi reluat pana cand utilizatorul doreste terminarea sa si se va cere repetarea optiunii, daca aceasta nu s‑a facut corect.



#include <stdio.h>

#include <stdlib.h>

#define PI 3.14159265358979323846

int main() while(scanf('%f', &raza) != 1);

if(ch == 'V')

do while(scanf('%f', &inaltimea) != 1);

switch(ch)

}

printf('n');

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Alegeti una din optiunile:

Aria (A), Circumferinta (C), Volumul (V), Iesire (Q): v

Introduceti raza: 10

Introduceti inaltimea: 1

Volumul cilindrului este: 314.159

Alegeti una din optiunile:

Aria (A), Circumferinta (C), Volumul (V), Iesire (Q): q

P10.2 Scrieti un program care sa deseneze pe ecran un ,X' cu dimensiunea specificata de utilizator (numar natural 20, inaltimea egala cu latimea), folosind simbolul , * '.

De exemplu, daca se introduce numarul 5, desenul va trebui sa arate astfel:

#include <stdio.h>

#include <stdlib.h>

int main()

printf('n');

}

printf('n');

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Introduceti dimensiunea: 8

Desenul cerut arata astfel:

*

* *

* *

**

**

* *

* *

*

P10.3 Programul urmator citeste de la tastatura o matrice de maxim 10   10 numere intregi apoi determina elementele minime pe linii si maxime pe coloane.

#include <stdio.h>

#include <stdlib.h>

int main()

printf('Elementele minime pe linii: n');

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

printf('Linia %d are minimul: %dn', i, min);

}

printf('Elementele maxime pe coloane: n');

for(j = 0; j < m; j++)

printf('Coloana %d are maximul: %dn', j, max);

}

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Introduceti nr. de linii: 3

Introduceti nr. de coloane: 3

A[0][0] = 1

A[0][1] = 2

A[0][2] = 3

A[1][0] = 4

A[1][1] = 5

A[1][2] = 6

A[2][0] = 7

A[2][1] = 8

A[2][2] = 9

Elementele minime pe linii:

Linia 0 are minimul: 1

Linia 1 are minimul: 4

Linia 2 are minimul: 7

Elementele maxime pe coloane:

Coloana 0 are maximul: 7

Coloana 1 are maximul: 8

Coloana 2 are maximul: 9

P10.4 Programul urmator citeste de la tastatura o matrice de maximum 10   10 numere intregi si sorteaza crescator liniile matricei. Precizare: prin conventie, o linie este mai mare decat alta daca primul element de pe o linie este mai mare decat primul element de pe a doua. Daca primele elemente sunt egale regula se aplica pentru urmatoarele perechi de elemente de pe liniile respective.

#include <stdio.h>

#include <stdlib.h>

/* functie care interschimba linia l1 cu l2 in matricea A */

void int_linii(int A[][10], int n, int m, int l1, int l2)

int main()

ind = 1; /* setare indicator */

while(ind)

}

/* afisare matrice */

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

for(j = 0; j < m; j++)

printf('A[%d][%d] = %dn', i, j, A[i][j]);

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Introduceti nr. de linii: 3

Introduceti nr. de coloane: 3

A[0][0] = 9

A[0][1] = 8

A[0][2] = 7

A[1][0] = 6

A[1][1] = 5

A[1][2] = 4

A[2][0] = 3

A[2][1] = 2

A[2][2] = 1

A[0][0] = 3

A[0][1] = 2

A[0][2] = 1

A[1][0] = 6

A[1][1] = 5

A[1][2] = 4

A[2][0] = 9

A[2][1] = 8

A[2][2] = 7

P10.5 Programul urmator citeste de la tastatura o matrice de maximum 10   10 numere intregi apoi elimina o linie a matricei. Precizare: indexul liniei ce se doreste eliminata va fi citit tot de la tastatura.

#include <stdio.h>

#include <stdlib.h>

int main()

/* citirea corecta a indicelui ie al liniei ce se doreste
eliminata */

while(1)

/* cu i de la ie la n se aduc liniile i+1 pe liniile i */

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

for(j = 0; j < m; j++)

A[i][j] = A[i+1][j];

/* decrementam numarul total de linii */

n--;

/* afisam matricea */

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

for(j = 0; j < m; j++)

printf('A[%d][%d] = %dn', i, j, A[i][j]);

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Introduceti nr. de linii: 3

Introduceti nr. de coloane: 3

A[0][0] = 1

A[0][1] = 2

A[0][2] = 3

A[1][0] = 4

A[1][1] = 5

A[1][2] = 6

A[2][0] = 7

A[2][1] = 8

A[2][2] = 9

Introduceti indicele liniei ce se doreste eliminata: 1

A[0][0] = 1

A[0][1] = 2

A[0][2] = 3

A[1][0] = 7

A[1][1] = 8

A[1][2] = 9

P10.6 Programul urmator citeste de la tastatura o matrice de dimensiuni n  m de numere intregi (maximum 10   10) si inlocuieste coloana k cu un vector de n elemente ce se va citi tot de la tastatura.
Precizare: pozitia coloanei, k, se va citi tot de la tastatura.

#include <stdio.h>

#include <stdlib.h>

int main()

while(1)

/* citim in vectorul v noua coloana a matricii A */

printf('Acum introduceti noile elemente ale coloanei:n');

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

/* parcurgem coloana k si inlocuim elementele sale */

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

A[i][k] = v[i];

/* tiparim noua matrice */

printf('Noua matrice are elementele:n');

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

for(j = 0; j < m; j++)

printf('A[%d][%d] = %dn', i, j, A[i][j]);

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Introduceti nr. de linii: 3

Introduceti nr. de coloane: 3

A[0][0] = 1

A[0][1] = 2

A[0][2] = 3

A[1][0] = 4

A[1][1] = 5

A[1][2] = 6

A[2][0] = 7

A[2][1] = 8

A[2][2] = 9

Introduceti indicele coloanei ce se doreste inlocuita: 1

Acum introduceti noile elemente ale coloanei:

A[0][1] = 1

A[1][1] = 2

A[2][1] = 3

Noua matrice are elementele:

A[0][0] = 1

A[0][1] = 1

A[0][2] = 3

A[1][0] = 4

A[1][1] = 2

A[1][2] = 6

A[2][0] = 7

A[2][1] = 3

A[2][2] = 9

P10.7 Programul urmator afiseaza graficul unei functii (de exemplu sin(x) pe o perioada) in format ASCII. Programul scaleaza functia in intervalul ce se doreste afisat si tipareste un singur caracter pe pozitia corespunzatoare valorii functiei. Terminalul alfanumeric se va considera de 80 coloane si 25 linii.

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define NC 40 /* numarul de coloane */

#define NL 25 /* numarul de linii */

main()

/* Se gasesc maximumul, M, si minimul, m, functiei */

M = m = v[0];

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

if(v[i] > M)

M = v[i];

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

if(v[i]<m)

m=v[i];

/* gaseste pasul minim */

q = (NC - 1) / (M - m);

/* parcurge terminalul alfanumeric linie cu linie */

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

for(j = 0; j < NC; j++) else

printf(' '); /* tipareste spatiu */

}

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

P10.8 Scrieti un program care sa implementeze un calculator de buzunar foarte simplu (doar cele 4 operatii elementare).

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]) else

rez = nr1 / nr2;

break;

default:

printf('Eroare: operator necunoscutn');

system('PAUSE');

exit(5);

}

printf('%g %c %g = %gn', nr1, op, nr2, rez);

system('PAUSE');

return 0;

Programul va afisa pe ecran, dupa compilare si executie:

Introduceti expresia (nr op nr, op = +-x/)

25.75 x 3.14

25.75 x 3.14 = 80.855

Probleme propuse - Teme de casa

Scrieti un program care citeste un numar intreg reprezentat in baza 10 si il converteste si afiseaza reprezentat in baza 16.

Scrieti un program care citeste de la tastatura un numar natural n cu cel mult 9 cifre si determina numarul natural k < n care are numarul maxim de divizori primi.

Scrieti un program care citeste perechi de numere reale care reprezinta coordonatele carteziene ale unui poligon convex si apoi calculeaza si afiseaza aria poligonului.

Scrieti un program care citeste un numar intreg pozitiv n < 50 000 reprezentand numarul de zile care au trecut de la 1 ianuarie 1900 si determina si afiseaza data calendaristica corespunzatoare. Se vor lua in consideratie si anii bisecti (1900 a fost an bisect iar 2000 nu a fost an bisect).

Scrieti un program care citeste din fisierul "nr.in" un numar natural cu minim 2 cifre si maxim 5000 de cifre zecimale si apoi calculeaza si scrie in fisierul "nr.out" patratul acestui numar.

Scrieti un program care determina cate perechi de numere naturale care nu depasesc un numar dat, n, au cel mai mic divizor comun un alt numar dat, d. Programul va afisa perechile de numere obtinute.

Scrieti un program care determina toate numerele naturale i < n care au proprietatea ca sunt egale cu suma factorialelor cifrelor care le contin.
Exemplu: 145 = 1! + 4! + 5!
Numarul n va fi citit de la tastatura.

Scrieti un program care determina care este numarul natural maxim care se poate construi din cifrele distincte ale unui numar natural in baza 10 cu maxim 80 de cifre care se citeste de la tastatura.

Scrieti un program care citeste un numar natural n cu maxim 50 de cifre zecimale si determina si afiseaza secventa maxima de cifre consecutive care se repeta de cel putin 2 ori in scrierea numarului n.

Scrieti un program care citeste ecuatiile a n drepte din plan si determina si afiseaza dreptele care apartin aceleiasi clase de paralelism. Ecuatia unei drepte este data de formula: a   x + b   y + c = 0; doua drepte apartin aceleasi clase de paralelism daca au aceeasi panta.

Scrieti un program care citeste intr‑un sir de caractere care reprezinta o expresie care contine mai multe numere complexe si operatii intre acestea apoi calculeaza si afiseaza rezultatul expresiei.
Precizari:
Operatii: + , ‑ , * , ^
Exemplu: (2 + 3 * i) ^ 3 + (7 + 9 * i) * (10 - 4 * i)

Scrieti un program care citeste coordonatele a trei figuri geometrice formate doar din linii drepte si determina si afiseaza doar segmentele care se inscriu in suprafata unui dreptunghi ale carui coordonate vor fi si ele citite de la tastatura. Precizare: aceasta operatie, denumita in limba engleza "clipping", este foarte importanta in afisarea grafica a informatiei.

Scrieti un program care citeste coordonatele unui graf orientat si ii ordoneaza varfurile astfel incat toate arcele sa aiba aceeasi orientare. Programul va semnala daca acest lucru nu este posibil. Exemplu: Daca avem (1, 2) (2, 3) (3, 1) nu este posibila ca toate arcele sa aiba aceeasi orientare.

Scrieti un program care citeste un fisier reprezentand un program C si scrie la iesire acelasi program in care acoladele corespunzatoare ‑ , ' ‑ au fost asezate una sub alta. In cazul mai multor acolade imbricate, cele din interior se vor deplasa fata de cele din exterior. Restul textului se va alinia pe aceeasi coordonata cu cele doua acolade corespunzatoare.

Scrieti un program care citeste un arbore n‑ar (n este un numar natural) si ii scrie reprezentarea fiu - frate. Precizare: in reprezentarea fiu ‑ frate un arbore n‑ar este reprezentat ca un arbore binar astfel incat pentru un varf x legatura stanga reprezinta primul fiu iar legatura dreapta reprezinta fratele.

Scrieti un program care citeste un numar natural n (cu maxim 10 cifre) si determina toate numerele ce pot fi obtinute mutand pe rand prima cifra a numarului n si a celor obtinute pe parcurs pe ultima pozitie.
Exemplu: 4273
2734
7342
3427

Problema va fi rezolvata in trei moduri:
folosind unul sau mai multe tablouri cu elemente de tip numeric;
folosind tipul sir de caractere;
folosind metode aritmetice.

Scrieti un subprogram care sa calculeze valoarea 2 la puterea 3000. Transformati apoi subprogramul pentru calculul oricarei puteri adica: n la puterea m (n < 10, m < 3001, m > 0, n si m intregi).

Scrieti un program care citeste polinoame rare si le memoreaza sub forma unei liste simplu inlantuite, unde pentru fiecare monom, se memoreaza gradul si coeficientul. Scrieti o functie pentru suma a doua polinoame rare, specificate ca parametru.

Scrieti un program care citeste n puncte din plan (n ≤ 100) date prin coordonatele lor carteziene si determina in care dintre aceste puncte putem alege centrul cercului de raza minima ce contine in interior toate cele n puncte date, precum si raza cercului. Precizari: datele vor fi citite din fisierul text "PUNCTE.TXT" , ce are pe prima linie valoarea lui n, iar pe urmatoarele n linii coordonatele carteziene ale punctelor, cate doua pe linie (x respectiv y), valori reale.

Scrieti un program care citeste fisierul text "TEST.IN" care contine un text scris pe mai multe linii si afiseaza toate caracterele folosite, codul ASCII corespunzator precum si frecventa lor de aparitie.

Scrieti un program care estimeaza cu 6 zecimale numarul p ) in modul urmator:
a) Se vor genera perechi de numere pseudo‑aleatoare de tipul (xy) cu 0 < x, y < 1;
b) Se vor numara cate perechi de astfel de numere pseudo‑aleatoare cad in interiorul sfertului de cerc situat in cadranul 1 al planul (xy);
c) se va evalua pi ca 4  <numarul_de_puncte_din_interiorul_sfertului_de_cerc> / <numarul_total_de_puncte>.

Scrieti un program care sa citeasca elementele a doua matrice, fiecare dintr‑un fisier, sa calculeze matricea produs si sa o tipareasca intr un al treilea fisier. Matricele vor fi structurate in fisiere pe linii si coloane. Se va afisa un mesaj de eroare daca inmultirea matricelor nu este posibila.

Scrieti un program care citeste elementele unei matrice patrate, dintr un fisier ASCII, calculeaza matricea transpusa si o tipareste intr un alt fisier.
Precizari: Matricea va fi structurata in primul fisier pe linii si coloane astfel:
1.0 -1.33 3.44
-3.14 5.67 0
0 4.67 10.01

Scrieti un program care citeste din fisierul "INPUT.TXT" doua propozitii scrise fiecare pe cate o linie. Propozitiile contin cuvinte formate din literele alfabetului englez. Orice alt caracter este considerat separator. Programul:
  va afisa numarul de cuvinte din fiecare propozitie;
  va verifica daca ultimul cuvant din prima propozitie este o anagrama (are aceleasi litere) a ultimului cuvant din cealalta propozitie. Pentru verificarea cuvintelor scrieti si folositi o functie recursiva.
Precizari:
Rezultatele se vor scrie in fisierul "
OUTPUT.TXT" astfel:
  pe primele doua linii programul va scrie numarul de cuvinte din fiecare propozitie;
  pe ultima linie va scrie mesajul "DA" sau "NU" pentru cazurile in care ultimele cuvinte sunt sau nu anagrame.

Scrieti un program care citeste fisierul "AMENZI.TXT" care contine evidenta amenzilor de circulatie pe o perioada data. Fiecarui conducator auto i se aloca 4 linii: prima linie va contine numele, cea de a doua numarul de inmatriculare al masinii, ce de a treia suma de bani corespunzatoare amenzii si cea de a patra daca amenda a fost sau nu platita (0 - neplatita, 1 ‑ platita). Programul va citi mai intai numarul de inregistrari, n. Apoi programul:
  va afisa suma de bani rezultata din amenzi, precum si numele soferilor si numarul masinii care a platit amenzile cele mai mari;
  numele soferilor care nu au platit amenda/amenzile ordonate alfabetic;
  procentul de amenzi neincasate.

Scrieti un program care citeste lista abonatilor telefonici dintr‑un oras dintr‑un fisier care contine numarul de telefon si numele abonatului pe cate o linie. Programul va crea o lista de premiere care sa cuprinda abonatii al caror numere de telefon cuprind doar cifre pare iar prima si ultima cifra sunt proportionale.

Scrieti un program care citeste doua fisiere ASCII structurate astfel:
a.  primul fisier va contine, structurat pe linii, numele si prenumele candidatilor la un concurs de admitere, separate prin unul sau mai multe spatii, in formatul <nume> <prenume>;
b.  al doilea fisier va contine, structurat pe linii, media la examenul de admitere.
Programul va asocia numele si prenumele persoanei de la linia i din primul fisier cu nota de la linia i din al doilea fisier. Programul va concatena cele trei campuri (numele, prenumele si nota), le va sorta in ordinea crescatoare a mediei si va scrie rezultatul intr
un al treilea fisier ASCII.
Exemple de fisiere:
fisier1.txt
CONSTANTIN Ioana
POPESCU George
VASILESCU Costin
fisier2.txt fisier3.txt
POPESCU George 9.52
CONSTANTIN Ioana 8.66
VASILESCU Costin 7.89

Scrieti un program care citeste doua fisiere ASCII structurate astfel:
a.  primul fisier va contine, structurat pe linii, numele si prenumele angajatilor unei firme, separate prin unul sau mai multe spatii, in formatul
<nume> <prenume>;
b.  al doilea fisier va contine, structurat pe linii, data nasterii, in formatul
<zi> <luna> <an>.
Programul va asocia numele si prenumele persoanei de la linia i din primul fisier cu data nasterii de la aceeasi linie din al doilea fisier. Programul va concatena cele cinci campuri (numele, prenumele, zi, luna, an), le va sorta in ordinea descrescatoare a varstei si va scrie rezultatul intr
un al treilea fisier ASCII.
Exemplu:
fisier1.txt
CONSTANTIN Ioana
POPESCU George
VASILESCU Costin
fisier2.txt
8 Ianuarie 1978
27 August 1980
16 Octombrie 1978
fisier3.txt
CONSTANTIN Ioana 8 Ianuarie 1978
VASILESCU Costin 16 Octombrie 1978
POPESCU George 27 August 1980

Scrieti un program care sa recunoasca intr un fisier sursa C directiva de preprocesare #define" si care sa genereze un alt fisier preprocesat.
Exemplu:
fisier1.c
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415
int main()
fisier2.c
#include <stdio.h>
#include <stdlib.h>
int main()

Scrieti un program care citeste fisierul "TEXT.TXT" care contine un text ce se incheie cu o linie goala. Sa se afiseze toate cuvintele textului in ordine alfabetica.
Precizari:
  lungimea unui cuvant este de maxim 25 caractere;
  numarul de cuvinte din text este cel mult 100;
  cuvintele sunt despartite printr‑un spatiu;
  se va folosi sortarea prin insertie.
Rescrieti programul pentru a putea prelucra un text oricat de mare si in care cuvintele sunt despartite prin orice tip de spatiu sau semn de punctuatie.

Scrieti un program care construiasca un fisier cu inregistrari de tip biblioteca cu urmatoarele campuri:
Numele autorului
Titlul cartii
Editura
Anul aparitiei
Lista cuvintelor cheie

Programul va permite urmatoarele operatii:
a.  introducerea unei inregistrari noi in biblioteca;
b.  stergerea unei inregistrari din biblioteca;
c.  extragerea intr‑un fisier nou a inregistrarilor in functie de valoarea unui anumit camp:
Numele autorului
Titlul cartii
Editura
Anul aparitiei
Existenta unui anumit cuvant in lista cuvintelor cheie
d.  sortarea fisierului in ordinea crescatoare a numelor autorilor (ordine lexicografica), iar pentru acelasi autor, inregistrarile se ordoneaza in functie de anul aparitiei;
e.  interclasarea a doua fisiere ordonate conform punctului anterior. Numele fisierelor se citesc de la tastatura. Programul va construi un fisier ordonat care contine reuniunea celor doua fisiere initiale si va elimina duplicatele din fisier.

Scrieti un program care citeste fisierul text "INTRARE.IN" care contine un text scris pe mai multe linii si rescrie textul pe pagini formate din doua coloane cu linii de lungime egala. Lungimea unei linii "ln" si dimensiunea unei pagini "lp" se citesc de la tastatura.
Rescrieti programul extinzandu‑l pentru a putea impartirea textul in k coloane.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1035
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved