Labrīt!
tātad problēmas radošais uzd šoreiz ir šāds:
Doti divi faili f1 un f2, kas satur veselus skaitļus, sakārtotus augošā secībā (šos failus var izveidot ar Notepad palīdzību). Izstrādāt programmu, kas nolasa skaitļus no failiem f1 un f2 un ieraksta tos failā f3 tādā veidā, lai skaitli failā f3 arī būtu sakārtoti augošā secībā.
vienīgā problēma ir pie izvadīšanas, bet skaidrības labad ierakstīšu visu kodu
Kods:
#include <fstream>
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#include <string.h>
void main ()
{int i,j;
char sk1 [10]; char sk2 [10];
ifstream f1;
f1.open ("C:\\Documents and Settings\\Ilshe\\Desktop\\f1.txt");
if (!f1)
{cout << "File open error!"; getch(); return;}
ifstream f2;
f2.open ("C:\\Documents and Settings\\Ilshe\\Desktop\\f2.txt");
if (!f2)
{cout << "File open error!"; getch(); return;}
ofstream f3;
f3.open ("C:\\Documents and Settings\\Ilshe\\Desktop\\f3.txt");
if (!f3)
{cout << "File open error!"; getch(); return;}
while ( (!f1.eof()) && (!f2.eof()) )
{f1>>sk1>>ws;
f2>>sk2>>ws;
for (i=0; i<strlen(sk1); i++)
for (j=0; j<strlen(sk2); j++)
{
if (sk1[i]<sk2[j])
f3<<"\n"<<sk1[i]<<"\n"<<sk2[j];
else f3<<"\n"<<sk2[j]<<"\n"<<sk1[i];
}
cout<<"\n informacija ierakstita faila";
f1.close();
f2.close();
f3.close();
getch();
}
tātad diezgan loģiski, ka šitais darbojas tā, ka salīdzina f1 pirmo skaitli un f2 pirmo sk. un tad ieraksta iekš f3 attiecīgi mazāko no tiem un tad lielāko. un tad attiecīgi salīdzina f1 otro sk. ar f2 otro sk. utt., bet tas nekam neder, ja, piem., f2 otrais sk. ir mazāks par f1 pirmo sk. utml.
tātad jautājums - kā panākt, lai viņš salīdzina visus ar visiem un tad ieraksta f3?
mēģināju vēl kkā šitā, bet te atkal izvada tikai mazāko no tiem sk., ko salīdzina. šķita, ka kkur varbūt trūkst {}, bet saliku visās iespējamās vietās un kombinācijās, un tāpat nepanācu to, ko vajag.
Kods:
for (i=0; i<strlen(sk1); i++)
for (j=0; j<strlen(sk2); j++)
{if (sk1[i]<sk2[j])
f3<<"\n"<<sk1[i];
else f3<<"\n"<<sk2[j];}
un vēl mēģināju piešķirt to mazāko vērtību vēl kkādam citam mainīgajam, bet šajā gadījumā arī ir tas pats, ka izvada tikai pusi no skaitļiem
Kods:
for (i=0; i<strlen(sk1); i++)
for (j=0; j<strlen(sk2); j++)
{ if (sk1[i]<sk2[j])
min=sk1[i];
else min=sk2[j];
f3<<"\n"<<min;}
}
būšu ļoti pateicīga, ja kāds varētu palīdzēt, pašai jau šķiet, ka šim nevajadzētu būt grūti, bet ir kkas , ko te nespēju atkost