Jump to content

Recommended Posts

Posted

1. Se citesc două numere naturale N şi P. Să se determine şi să se afişeze rezultatul expresiei ”N x P” fără a folosi înmulţirea (se va folosi adunarea repetată )

 

#include <iostream> //Inmultirea fara inmultire
 
using namespace std;
int NoriP,N,P,i;
int main()
{
    cout<<"N = ";
    cin >>N;
    cout<<"P = ";
    cin>>P;
    for(i=1 ; i<=P ;i++)
        NoriP=NoriP+N;
        cout<<"NoriP = "<<NoriP;
 
 
    return 0;
}

 


 
2. Implementaţi un program care citeşte de la tastatură 2 numere naturale N1 ?i N2. Programul va scrie în FILE.OUT toate numerele întregi dintre N1 ?i N2.

 

#include <iostream>
#include <fstream>
using namespace std;
ofstream g ("FILE.OUT");
int N1,N2,i;
int main()
{
 cout << "N1 = "; cin>>N1;
 cout << "N2 = "; cin>>N2;
 if (N1>N2)
 for (i=N2; i<=N1; i++)
 g<<i<<" ";
 else
 for (i=N1; i<=N2; i++)
 g<<i<<" ";
 cout<<"Numerele au fost salvate in fisierul FILE.OUT";
 g.close();
 return 0;
}

 


 
3.Implementa un program care citeşte de la tastatură 2 numere naturale N1 ?i N2. Programul va scrie în FILE.OUT toate numerele impare dintre N1 ?i N2

 

#include <iostream>
#include <fstream>
using namespace std;
ofstream g ("FILE.OUT");
int N1,N2,i;
int main()
{
 cout << "N1 = "; cin>>N1;
 cout << "N2 = "; cin>>N2;
 if (N1>N2)
 {
 for (i=N2; i<=N1; i++)
 if (i%2==1)
 g<<i<<" ";
 }
 else
 {
 for (i=N1; i<=N2; i++)
 if (i%2==1)
 g<<i<<" ";
 }
 cout<<"Numerele au fost salvate in fisierul FILE.OUT";
 g.close();
 return 0;
}

 


 
4.Implementaţi un program care citeşte de la tastatură 2 numere naturale N1 ş N2. Programul va scrie în FILE.OUT toate numerele dintre N1 ?i N2 care sunt formate din 2 cifre.

 

#include <iostream>
#include <fstream>
using namespace std;
ofstream g ("FILE.OUT");
int N1,N2,i;
int main()
{
 cout << "N1 = "; cin>>N1;
 cout << "N2 = "; cin>>N2;
 if (N1>N2)
 {
 for (i=N2; i<=N1; i++)
 if (i>=10 && i<=99)
 g<<i<<" ";
 }
 else
 {
 for (i=N1; i<=N2; i++)
 if (i>=10 && i<=99)
 g<<i<<" ";
 }
 cout<<"Numerele au fost salvate in fisierul FILE.OUT";
 g.close();
 return 0;
}

 


 
5.Se citeşte nu număr natural N din fisierul PROBLEMA.IN Se citesc apoi N numere reale din acelasi fisier. Programul va scrie valoarea maximă din cele N numere în fişierul PROBLEMA.OUT

 

#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("PROBLEMA.IN");
ofstream g ("PROBLEMA.OUT");
int N,i,nr,maxim;
int main()
{
 f>>N; //Se citeste numarul din fisier si se salveaza in N
 i=1; //Primul din cele N numere se citeste separat
 f>>nr;
 maxim=nr; //Se initializeaza maxim cu primul din cele N numere
 for (i=2; i<=N; i++)
 {
 f>>nr;
 if (nr>maxim)
 maxim=nr;
 }
 g<<"Valoarea maxima este "<<maxim;
 cout<<"Solutie salvata in PROBLEMA.OUT";
 f.close();
 g.close();
 return 0;
}

 


 
6.Se citeşte nu număr natural N. Se citesc apoi N numere reale. Să se afişeze suma celor N numere reale.

 

#include <iostream>
int i,N; //i = indicele elementului citit
float nr, suma;
using namespace std;
int main()
{
 cout<<"Dati numarul de elemente reale N = ";
 cin>>N;
 i=1;
 do
 {
 cout<<"Dati numarul de pe pozitia "<<i<<" : ";
 cin>>nr;
 suma=suma + nr; //Dupa ce a fost citit acesta va fi adaugat la suma
 i++;
 } while (i<=N);
 cout<<"Suma celor "<<N<<" numere reale este "<<suma;
 return 0;
}

 


 
7. Implementaţi în C++ un program care afi?ează toate numerele naturale în ordine crescătoare numere a căror sumă este mai mică de 5000.

 

 

#include <iostream>
int i,suma=0;
using namespace std;
int main()
{
 i=0;
 //atat timp cat suma elementelor este <5000, i va creste cu o unitate
 //si va fi adugat la suma
 while (suma<5000)
 {
 i=i+1;
 if (suma+i<5000)
 {
 cout<<i<<" ";
 suma=suma+i;
 }
 else break;
 // Atunci cand la urmatoarea valoare a lui i este depasita suma de 5000,
 // se executa break; comanda care iese automat din bucla
 }
 cout<<endl<<"Suma elementelor adunate este "<<suma<<endl;
return 0;
}

 


 
8.Din fișierul DATE.IN se citește de pe prima linie un număr natural n. 
    De pe a doua linie a fișierului se citesc n numere reale (acestea sunt separate cu un spațiu între ele, iar la citire vor fi memorate într-un vector).
    Programul va scrie in DATE.OUT:
    a) Cel mai ieftin produs
    b) Numarul total de bucati
    c) Intreaga cantitate din fiecare produs
    d) Pretul total al produselor
    e) Exprimati cat costa fiecare produs in euro (1e = 5lei)
    f) Suma cifrelor

 

EX DATE.IN:

8
25 7 91 73 6 63 12 5 // pretul produselor
7 9 1 3 3 4 1 8 //numarul de bucati
 

 

 

#include <iostream>
#include <fstream>
using namespace std;
fstream f("DATE.IN");
ofstream g("DATE.OUT");
int i,n,PRET[100],NRBUC[100],cmieftin,ctotal,ptprod,VMAX[100],sumcif=0;
int main()
{
    //citirea din fisier
    f>>n;
    for(i=1; i<=n; i++)
        f>>PRET[i];
    for(i=1; i<=n; i++)
        f>>NRBUC[i];
 
    //a)cel mai ieftin produs
    cmieftin=100000000;
    for(i=1; i<=n; i++)
        if(PRET[i]<cmieftin)
            cmieftin=PRET[i];
    g<<"Cel mai ieftin produs costa "<<cmieftin;
 
    //b) Numarul total de bucati
    for(i=1; i<=n; i++)
        ctotal=ctotal + NRBUC[i];
    g<<endl<<"Cantitatea totala de produse este "<<ctotal;
 
    //c) Intreaga cantitate din fiecare produs
    for(i=1; i<=n; i++)
    g<<endl<<"Intreaga cantitate din prod."<<i<<" costa "<<NRBUC[i]+PRET[i];
 
    //d) Pretul total al produselor
    for(i=1; i<=n; i++)
    ptprod = NRBUC[i] * PRET[i] + ptprod;
    g<<endl<<"Intreaga cantitate de produse costa "<<ptprod<<endl;
 
    //e) Exprimati cat costa fiecare produs in euro (1e aprox. 5lei)
    for(i=1; i<=n; i++)
        g<<PRET[i]/5<<" euro; ";
 
    //f) Suma cifrelor
    for(i=1; i<=n; i++)
        if(PRET[i]>NRBUC[i])
            VMAX[i]=PRET[i];
            else
            VMAX[i]=NRBUC[i];
    for(i=1; i<=n; i++)
    cout<<VMAX[i]<<" ";
    g<<endl;
 
    for(i=1; i<=n; i++)
    {
    while(VMAX[i]!=0)
       {
        sumcif=VMAX[i]%10+sumcif;
        VMAX[i]=VMAX[i]/10;
       }
   g<<sumcif<<" ";
    }
 
    f.close();
    g.close();
    return 0;
}

 

 

 

9. Se citeste o matrice cu n linii si m coloane, n si m numere impare (n,m<=100) cu elemente numere naturale din intervalul [0,1000]. 

a) Calculati si afisati elementul maxim din matrice. 
b) Afisati pe cate linii se afla maximul. 
c) Afisati liniile care au elementele in ordine strict crescatoare. 
d) Afisati in orice ordine elementele care sunt unice pe coloana lor. 
e) Stergeti linia de la mijlocul matricii si afisati matricea rezultata. 
 
date de intrare:                                              date de iesire:
5 7                                                                 7 (a)
1 2 3 4 6 7 2                                                  3 (b) 
5 4 6 0 6 5 4                                                  1 2 3 4 5 6 7 © 
6 5 7 4 7 7 5                                                  3 5 6 5 6 7 0 2 5 7 4 5 6 2 4  sau 2 5 6 0 5 4 6 5 7 7 3 2 4 5 6 (d)
3 4 3 4 2 4 5                                                  1 2 3 4 6 7 2 (e) 
1 2 3 4 5 6 5                                                  5 4 6 0 6 5 4 
                                                                      3 4 3 4 2 4 5 
                                                                      1 2 3 4 5 6 7
 

 

#include <fstream>
using namespace std;
ifstream f("matrice.in");
ofstream g("matrice.out");
int n,m,A[101][101];
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            f>>A[i][j];
    //cerinta a: elementul maxim din matrice
    int max=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(A[i][j]>max) max=A[i][j];
    g<<max<<endl;
    //cerinta b: pe cate linii se afla maximul
    int c=0;
    for(int i=1;i<=n;i++)
    {
        int gasit=0;
        for(int j=1;j<=m;j++)
            if(A[i][j]==max) gasit=1;
        if(gasit==1) c++;
    }
    g<<c<<endl;
    //cerinta c: afisare linii cu elementele in ordine strict crescatoare
    for(int i=1;i<=n;i++)
    {
        int ok=1;
        for(int j=1;j<m;j++)
            if(A[i][j]>=A[i][j+1]) ok=0;
        if(ok)
        {
            for(int j=1;j<=m;j++)
                g<<A[i][j]<<" ";
            g<<endl;
        }
    }
    //cerinta d: elementele care sunt unice pe coloana lor
    //cu vector de frecventa
    for(int j=1;j<=m;j++)
    {
        int F[1001]={0};
        for(int i=1;i<=n;i++)
            F[A[i][j]]++;
        for(int v=0;v<=1000;v++)
            if(F[v]==1) g<<v<<" ";
    }
    g<<endl;
    //cu numarare aparitii
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int x=0;
            for(int k=1;k<=n;k++)
                if(A[i][j]==A[k][j]) x++;
            if(x==1) g<<A[i][j]<<" ";
        }
    g<<endl;
    //cu verificare ca e unic prin reducere la absurd
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int ok=1;
            for(int k=1;k<=n;k++)
                if(i!=k && A[i][j]==A[k][j])
                ok=0;
            if(ok==1)
                g<<A[i][j]<<" ";
        }
    g<<endl;
    //cerinta e: stergerea liniei de la mijlocul matricii
    for(int i=n/2+1;i<n;i++)
        for(int j=1;j<=m;j++)
            A[i][j]=A[i+1][j];
    n--;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            g<<A[i][j]<<" ";
        g<<endl;
    }
    return 0;
}

 

10. Se dă:

struct disciplina{
  char nume[100];
  float nota1,nota2,nota3,media;
};
disciplina D[20];
1. Realizați un program care citește datele a n discipline (pentru fiecare disciplină va fi introdus numele și cele 3 note).
Programul va determina media fiecărei discipline și o va afișa.
2. Modificați programul anterior astfel încât să fie introdusă și nota din teză.
Pentru disciplinele la care nu se dau teze, se va introduce valoarea 0 pentru nota din teză iar calcularea mediei se va face doar pentru note.

 

#include <iostream>
#include <fstream>
using namespace std;
struct disciplina {
    char nume[50];
    float nota1,nota2,nota3,media,teza;
};
disciplina d[20];
ofstream g("medii.txt");
int i,n;
int main()
{
    cout<<"Numar de discipline N = ";
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cout<<"Dati numele disciplinei : ";
        cin>>d[i].nume;
        while(d[i].nota1<1 || d[i].nota1>10)
            {            
                cout<<"Dati prima nota a disciplinei "<<d[i].nume<<" : ";
                cin>>d[i].nota1;
            }
        while(d[i].nota2<1 || d[i].nota2>10)
            {
                cout<<"Dati a 2-a nota a disciplinei "<<d[i].nume<<" : ";
                cin>>d[i].nota2;
            }
        while(d[i].nota3<1 || d[i].nota3>10)
            {
                cout<<"Dati a 3-a nota a disciplinei "<<d[i].nume<<" : ";
                cin>>d[i].nota3;
            }
            cout<<"Dati nota tezei de la disciplina "<<d[i].nume<<" : ";
            cin>>d[i].teza;
                if(d[i].teza==0)
                    d[i].media=(d[i].nota1+d[i].nota2+d[i].nota3)/3;
                    else
                    d[i].media=((d[i].nota1+d[i].nota2+d[i].nota3)/3*3 + d[i].teza)/4;
                    g<<"La disciplina "<<d[i].nume<<" s-a obtinut media "<<d[i].media<<endl;
    
    }
    g.close();
    return 0;
}

 

 11. Din fișierul FILE.IN se citesc de pe prima linie două numere naturale n și m. Acestea sunt separate de un spațiu în fișier. 
    De pe următoarele n linii se citesc m numere intregi.
    Programul va scrie in FILE.OUT:
    a) pe prima linie a fișierului, elementele pare din matrice 
    b) pe a doua linie a fișierului, suma elementelor divizibile cu 5 din matrice 
    c) pe a treia linie a fișierului, elementele de pe conturul matricii 
    d) pe a patra linie valoarea minimă și valoarea maximă din matrice
    e) pe a patra linie valoarea minimă și valoarea maximă din matrice
    Apoi, vor fi înlocuite în matrice numerele impare cu dublul lor. 
    f) pe a cincea linie a fișierului vor fi scrise elementele matricii ordonate crescător. 
    Pentru a sorta elementele din matrice, acestea vor fi copiate într-un vector (care va avea n x m elemente). 
    Apoi, elementele vor fi sortate în vector și scrise în fișier.
    g) pe a șasea linie a fișierului vor fi scrise sumele cifrelor fiecărui element din matrice. 

 

 

#include <iostream>
#include <fstream>
using namespace std;
ifstream f("FILE.IN");
ofstream g("FILE.OUT");
int n,i,m,j,A[20][20],sumad5=0,valmin,valmax;
int main()
{
    //CITIREA DIN FISIER
    f>>n>>m; // n = numar de linii , m = numar de coloane
    for(i=1;i<=n;i++) // i = indice linie
        for(j=1;j<=m;j++) // j = indice coloana
            f>>A[i][j];
    //afisare matrice pe ecran
    for(i=1;i<=n;i++) // i = indice linie
    {
        for(j=1;j<=m;j++) // j = indice coloana
            cout<<A[i][j]<<" ";
        cout<<endl;
    }
    //a)
     for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            if(A[i][j]%2==0)
        g<<A[i][j]<<" ";
    }
    g<<endl;
    //b)
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(A[i][j]%10==0 || A[i][j]%10==5)
                sumad5=sumad5+A[i][j];
        g<<"Suma elementelor divizibile cu 5 este "<<sumad5<<endl;
    //c)
     for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(i==1 || i==n || j==1 || j==m )
                g<<A[i][j]<<" ";
    g<<endl;
 
    //d)
    valmin=valmax=A[1][1];
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            if(A[i][j]<valmin)
                valmin=A[i][j];
            if(A[i][j]>valmax)
                valmax=A[i][j];
        }
    g<<"Valoarea minima din matrice este "<<valmin<<" iar cea maxima este "<<valmax;
    g<<endl;
    //e)
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(A[i][j]%2==1)
                A[i][j]=2*A[i][j];
      for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            g<<A[i][j]<<" ";
        g<<endl;
    }
    return 0;
}

 12. Din fișierul SURSA.IN se citește de pe prima linie un număr natural n (care reprezinta numarul de note la o disciplina).    

       De pe a doua linie a fișierului se citesc cele n note (numere reale care sunt separate cu un spațiu între ele, iar la citire vor fi memorate într-un vector).   

      De pe a treia linie a fișierului se citește un număr real reprezentând nota din teză.   

      Programul va scrie în fișierul SURSA.OUT   

      a) Media elevului fără teză pe prima linie a fișierului   

      b) Medifa finală la calcularea căreia a fost introdusă și nota din teză(pe a 2-a linie a fișierului)   

      c) Mesajul `PROMOVAT` dacă elevul este promovat sau mesajul `CORIGENT` dacă elevul nu este promovat.

#include <iostream>
#include <Fstream>
using namespace std;
int n,i,suma=0;
float teza,V[20],mediafin,median;
ifstream f("SURSA.IN");
ofstream g("SURSA.OUT");
int main()
{
//citirea datelor
    f>>n;
    for (i=1;i<=n;i++)
        f>>V[i];
    f>>teza;
//a)
    for (i=1;i<=n;i++)
        suma=suma+V[i];
    median=suma/n;
    g<<median<<endl;
//b)
    mediafin=(3*median+teza)/4;
    g<<mediafin<<endl;
//c)
    if (mediafin < 4.5)
        g<<"CORIGENT";
    else
        g<<"PROMOVAT";
 
    f.close();
    g.close();
    return 0;
}

 

  • Upvote 1

Posted

E mai indicat. De exemplu, daca folosesti o variabila intr-o singura functie, n-are rost sa o declari global, pur si simplu local, in functia respectiva.

Un alt plus e ca poti sa folosesti local aceeasi variabila in mai multe functii.

Exemplu:

void blabla() {
   int i;
   ...
}

void altblabla() {
   int i;
   ...
}

Daca iti iese un program din prima, inseamna ca ceva e gresit...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.