Jump to content

Recommended Posts

Posted

Buna! Am urmatoarea problema: In fisierul nr1.txt este memorata pe prima linie o valoare naturala n de cel mult 8 cifre, iar pe linia urmatoare sunt memorate n numere naturale, cu maximum 4 cifre fiecare, ordonate strict crescator si separate prin cate un spatiu. In fisierul nr2.txt este memorata pe prima linie o valoare naturala m de cel mult 8 cifre, iar pe linia urmatoare sunt memorate m numere naturale, cu maximul 4 cifre fiecare, ordonate strict crescator si separate prin cate un spatiu. Se cere afisarea pe ecran, separate prin cate un spatiu, in ordine strict crescatoare, a tuturor numerelor aflate pe a doua linie in cel putin unul dintre cele doua fisiere. In cazul in care un numar apare in ambele fisiere, el va fi afisat o singura data. Alegeti un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate si al timpului de executare.
Exemplu: pentru urmatoarele fisiere:
nr 1.txt
5
3 6 8 9 12
se va afisa 2 3 5 6 7 8 9 12 13

nr2.txt
6
2 3 5 7 9 13

a) Descrieti succint in limbaj natural strategia de rezolvare si justificati eficienta algoritmului
b) Scrieti programul C/C++ corespunzator algoritmului ales.

Eu am facut codul:

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    int n,m,ant=-1,x,y;
    ifstream f("V19_S3_4_1.txt");
    ifstream g("v19_s3_4_2.txt");
    f>>n;
    g>>m;
    while(f>>x || g>>)
        cout<<x<<"  "<<y<<" ";
    {
        if(ant==-1)
            if(x>y)
                ant=y;
            else
                ant=x;
        if(x<y &&x!=ant)
        ant=x;
        else
            if(y<x && y!=ant)
            ant=y;
        cout<<ant<<"  ";
    }
    return 0;
}

dar nu merge. Ce e gresit?
Multumesc!

  • Moderators
Posted
while(f>>x || g>>y)
  cout<<x<<"  "<<y<<" ";

Aici citeşti concomitent din ambele fişiere, până când unul se goleşte, apoi rămâne să citeşti din celălalt. Ce ai pus după nu mai intră în while.

Nu prea înţeleg ce vrei să faci acolo, dar problema se rezumă la algoritmul de interclasare.

  • Upvote 1
  • 2 months later...
Posted

O varianta de rezolvare:

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    int x,y,i=1,j=1,n,m,ant=100000;
    ifstream f("nr1V19.txt");
    ifstream g("nr2V19.txt");
    f>>n;
    g>>m;
    f>>x;
    g>>y;
    while(i<=n && j<=m)
    {
        if(x<y &&x!=ant)
        {
            cout<<x<<"  ";
            ant=x;
            i++;
            f>>x;
        }
        if(y<<x && y!=ant)
        {
            cout<<y<<"  ";
            ant=y;
            j++;
            g>>y;
        }
        if(y==x && x!=ant)
        {
            cout<<x<<"   ";
            ant=x;
            j++;
            i++;
            f>>x;
            g>>y;
        }
    }
    return 0;
}

 

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.