Witam!
Utwórz zmienną typu int przed pętlą, a środku zwiększaj o 1. Drukuj gdy liczba jest podzielna przez 2.
Zrób pętlę (np. for), w której będziesz wczytywać co drugi wiersz. Albo też licznik w while który się zwiększa i jeśli będzie on parzysty/nieparzysty to wypisze linię, np.
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int main()
{
string linia;
fstream plik;
int licznik=0;
plik.open("D:\wizytowka.txt", ios::in);
if(plik.good() == true)
{
while(!plik.eof())
{
licznik++; //licznik startuje od 1 jak wiersze w tekscie i zwiększa się o 1 w każdej iteracji
if((licznik % 2)==1) //jeżeli licznik jest nieparzysty (wiersz nieparzysty)
{
getline(plik, linia); //wczytuje linię do bufora
cout << linia << endl; //wyświetla linię
}
else //jeżeli licznik jest parzysty (wiersz parzysty)
{
getline(plik, linia); //wczytuje linię do bufora ale nie wyświetla
}
}
plik.close();
}
system("PAUSE");
return(0);
}
Reup: getline można umieścić przez blokiem if, zamiast w środku bloku if i bloku else.
Okej zrobiłem to tak:
Jeżeli wszystkie są różnej długości a chcesz wybrać najdłuższy to
-
tworzysz zmienną int np. licz = 0 i string np. naj
-
porównujesz za każdym odczytem lini czy linia.length() jest większe od licz i jeśli tak to do naj wpisujesz linię a do licz wpisujesz linia.length().
Gorzej, jeśli jest kilka linii o tej samej długości to wtedy wypisze tylko jedną z nich. W takim wypadku musiałbyś użyć Vecotra i pogłówkować troszkę.
Po co liczyć linie ?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string linia;
fstream plik;
plik.open("wizytowka.txt", ios::in);
if(plik.good() == true){
bool nt=0;
while(!plik.eof()){
getline(plik, linia);
if(nt^=1)
cout << linia << endl; //wyświetlenie linii
}
plik.close();
}else cout << "BRAK TAKIEGO PLIKU!" << endl;
system("PAUSE");
return 0;
}
@ostatnie pytanie, po co zmienna licz skoro to samo masz w obiekcie którego używasz do przechowywania ciągu znaków ?
if(linia.length()>tmp.length()) tmp=linia;//wartość będzie w tmp