Zadania z programowania w C++: liczby ujemne, tablice i operacje na napisach
Enviado por Anónimo y clasificado en Otras materias
Escrito el en
polaco con un tamaño de 4,15 KB
Zestaw 1
Zadanie 1
Dane jest ciąg liczb rzeczywistych należących do przedziału (R1, R2). Należy określić, ile było liczb ujemnych, pokazać ostatnią oraz największą ujemną.
#include <iostream>
using namespace std;
int main() {
const double R1 = -1.0, R2 = 1.0;
double x;
int licznik = 0;
double ostatnia, max_ujemna;
bool pierwsza = true;
while (true) {
cin >> x;
if (x >= R1 && x <= R2)
break;
if (x < 0) {
licznik++;
ostatnia = x;
if (pierwsza) {
max_ujemna = x;
pierwsza = false;
} else if (x > max_ujemna) {
max_ujemna = x;
}
}
}
if (licznik == 0) {
cout << "Brak liczb ujemnych";
} else {
cout << "Ilość ujemnych: " << licznik << endl;
cout << "Ostatnia ujemna: " << ostatnia << endl;
cout << "Największa ujemna: " << max_ujemna << endl;
}
return 0;
}
Zadanie 2
Tablica A[n][n]: należy znaleźć w każdym wierszu najmniejszy napis, wstawić go na drugą przekątną i zapisać każdy wiersz, którego pierwszy napis zaczyna się znakiem "}".
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const int n = 3;
string A[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> A[i][j];
for (int i = 0; i < n; i++) {
int minIdx = 0;
for (int j = 1; j < n; j++)
if (A[i][j].length() < A[i][minIdx].length())
minIdx = j;
A[i][n - 1 - i] = A[i][minIdx];
}
ofstream plik("klamry.txt");
for (int i = 0; i < n; i++) {
if (A[i][0][0] == '}') {
for (int j = 0; j < n; j++)
plik << A[i][j] << " ";
plik << endl;
}
}
plik.close();
return 0;
}
Zadanie 3
Program wczytuje liczby całkowite aż do napotkania liczby dodatniej podzielnej przez M = 5. Wyznacza najmniejszą liczbę oraz liczbę par kolejnych liczb parzystych.
#include <iostream>
using namespace std;
int main() {
const int M = 5;
int x, min, prev;
bool first = true;
int pary = 0;
while (true) {
cin >> x;
if (x > 0 && x % M == 0)
break;
if (first) {
min = x;
first = false;
} else {
if (x < min)
min = x;
if (x % 2 == 0 && prev % 2 == 0)
pary++;
}
prev = x;
}
cout << "Najmniejsza: " << min << endl;
cout << "Pary parzystych: " << pary << endl;
return 0;
}
Zadanie 4
Dla tablicy A[n][n] należy znaleźć element o najdłuższym napisie na drugiej przekątnej, zamienić go z elementem A[n-1][n-1], a następnie zapisać wiersze o indeksach parzystych do pliku.
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const int n = 3;
string A[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> A[i][j];
int idx = 0;
for (int i = 1; i < n; i++)
if (A[i][n - 1 - i].length() > A[idx][n - 1 - idx].length())
idx = i;
if (A[idx][n - 1 - idx].length() != A[n - 1][n - 1].length()) {
string tmp = A[idx][n - 1 - idx];
A[idx][n - 1 - idx] = A[n - 1][n - 1];
A[n - 1][n - 1] = tmp;
}
ofstream plik("nowa.txt");
for (int i = 0; i < n; i += 2) {
for (int j = 0; j < n; j++)
plik << A[i][j] << " ";
plik << endl;
}
plik.close();
return 0;
}