Hej,
Robię zadanie i mam problem z zamianą napisów.
Możecie mnie nakierować gdzie robię błąd?
Treść zadania:
Napisać program, który z pliku new.txt wczytuje tablicę napisów A[w][k] (w, k - stałe) – przyjąć, że
danych w pliku jest dostatecznie dużo. Następnie w każdym wierszu należy znaleźć najkrótszy napis
i zamienić go miejscami z napisem z kolumny o indeksie jz w tym wierszu, gdzie jz należy wylosować. Na
koniec wydrukować tablicę wierszami.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <ctime>
using namespace std;
int main()
{
const int w = 10, k = 5;
string A[w][k];
int ileLiter, najkrotszy;
int losowaWartosc;
ifstream plikWE;
plikWE.open("new.txt");
if ( !plikWE.is_open() )
{
cout << "Nie ma takiego pliku!" << endl ;
return 1;
}
for (int x=0; x<w; x++)
{
for (int y=0; y<k; y++)
{
plikWE >> A[x][y];
}
}
srand (time(0));
string temp;
for (int x=0; x<w; x++)
{
najkrotszy = A[x][0].size();
for (int y=0; y<k; y++)
{
if(A[x][y].size() < najkrotszy)
{
najkrotszy = A[x][y].size();
}
} cout << najkrotszy; cout << endl;
losowaWartosc = 1 + rand() % 5 + 1 - 1;
temp = najkrotszy;
najkrotszy = A[x][losowaWartosc];
A[x][losowaWartosc] = temp;
}
for (int x=0; x<w; x++)
{
for (int y=0; y<k; y++)
{
cout << setw(15)<< A[x][y];
} cout << endl;
}
plikWE.close();
return 0;
}