Jump to content

Sfaturi rezolvare problema C 2 fisiere, 4 si 8 cifre


Ecaterina

Recommended Posts

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!

Link to comment
Share on other sites

  • Moderators
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
Link to comment
Share on other sites

  • 2 months later...

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;
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • 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.