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;
}

Entradas relacionadas: