C++ Bc. 18 cpp: Porovnání verzí
Bez shrnutí editace |
m odstranen priklad vystupu |
||
| (Není zobrazeno 5 mezilehlých verzí od 2 dalších uživatelů.) | |||
| Řádek 1: | Řádek 1: | ||
[ [[C | #include <iostream> | ||
#include <sstream> | |||
std::istream& komentar(std::istream& inp); | |||
int main() | |||
{ | |||
using namespace std; | |||
istringstream | |||
data("/* vstup obsahuje souradnice x a y */ " | |||
"/* x */ 123.54 /* y */ 345.53 " | |||
" 738.34 542.43 433.22 543.98 " | |||
" 832.64 343.25 534.17 541.23 " | |||
" 892.83 336.34 /* konec dat */ "); | |||
double x, y; | |||
double sx = 0, sy = 0; | |||
int pocet = 0; | |||
// funkce komentar je definovana jako manipulator bez parametru | |||
while (data >> komentar >> x >> komentar >> y) | |||
{ | |||
cout << x << " " << y << endl; | |||
sx += x; | |||
sy += y; | |||
pocet++; | |||
} | |||
if (pocet) | |||
cout << "\nteziste: " << sx/pocet << " " << sy/pocet << endl; | |||
else | |||
cout << "na vstupu nejsou zadne souradnice\n"; | |||
} | |||
std::istream& komentar(std::istream& inp) | |||
{ | |||
char z; | |||
while (inp >> z) | |||
{ | |||
// komentar zacina dvoji znaku /* | |||
if (z != '/' || inp.peek() != '*') | |||
{ | |||
inp.putback(z); | |||
return inp; | |||
} | |||
inp.get(); // nactu znak '*' | |||
// komentar konci dvojici znaku */ | |||
while (inp >> z) | |||
if (z == '*' && inp.peek() == '/') | |||
{ | |||
inp.get(); // nactu znak '/' | |||
break; // hledam dalsi komentar | |||
} | |||
} | |||
return inp; | |||
} | |||
[ [[C++ Bc. 18 | Zpět]] ] | |||
[[Kategorie:Programování]] | |||
[[Kategorie:C++]] | |||
Aktuální verze z 20. 10. 2006, 21:52
#include <iostream>
#include <sstream>
std::istream& komentar(std::istream& inp);
int main()
{
using namespace std;
istringstream
data("/* vstup obsahuje souradnice x a y */ "
"/* x */ 123.54 /* y */ 345.53 "
" 738.34 542.43 433.22 543.98 "
" 832.64 343.25 534.17 541.23 "
" 892.83 336.34 /* konec dat */ ");
double x, y;
double sx = 0, sy = 0;
int pocet = 0;
// funkce komentar je definovana jako manipulator bez parametru
while (data >> komentar >> x >> komentar >> y)
{
cout << x << " " << y << endl;
sx += x;
sy += y;
pocet++;
}
if (pocet)
cout << "\nteziste: " << sx/pocet << " " << sy/pocet << endl;
else
cout << "na vstupu nejsou zadne souradnice\n";
}
std::istream& komentar(std::istream& inp)
{
char z;
while (inp >> z)
{
// komentar zacina dvoji znaku /*
if (z != '/' || inp.peek() != '*')
{
inp.putback(z);
return inp;
}
inp.get(); // nactu znak '*'
// komentar konci dvojici znaku */
while (inp >> z)
if (z == '*' && inp.peek() == '/')
{
inp.get(); // nactu znak '/'
break; // hledam dalsi komentar
}
}
return inp;
}
[ Zpět ]