Редактирование Трех Задач

Тема в разделе "C/C++/C#", создана пользователем velran322, 15 янв 2013.

  1. velran322

    velran322 New Member

    Регистрация:
    15 янв 2013
    Сообщения:
    1
    Симпатии:
    0
    В общем ребят, прошу помощи. Есть три выполненные задачи на C, все работает, но требуется переделка. Нужно использовать ТОЛЬКО stdio.h и math.h
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Задача 1"</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    /*
    2. Дано целое число n, удовлетворяющее условию 0<|n| <= 2*10^9.
    Найти сумму цифр числа n.
    */


    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main()
    {
    char input[16];
    fgets(input, 16, stdin);

    int sum = 0, i, n = atoi(input);
    for (i = strlen(input) - 1; i != 0; i--) {
    sum += n % 10;
    n /= 10;
    }

    printf("sum = %d", sum);
    return 0;
    }
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Задача 2"</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    /*
    3. Если в целочисленной последовательности нет других чисел кроме
    x, y, z, то упорядочить последовательность по невозрастанию.
    */

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int count;
    printf("Количество элементов в последовательности: ");
    scanf("%d", &count);

    int i, input[count],
    x = -1, y = -1, z = -1;

    for (i = 0; i < count; i++) {
    printf("Введи %d элемент: ", i);
    scanf("%d", &input[i]);

    // свободны ли места для новых чисел
    if (x == -1) {
    x = input[i];
    } else if (y == -1) {
    y = input[i];
    } else if (z == -1) {
    z = input[i];
    }

    // если мест для новых чисел нет
    if (input[i] != x && input[i] != y && input[i] != z) {
    printf("В последовательности есть другие числа, кроме x, y, z");
    return 0;
    }
    }

    // сортируем
    int j;
    for (i = 0; i < count; i++) {
    for (j = 0; j < count - 1; j++) {
    if (input[j] < input[j+1]) {
    int tmp = input[j];
    input[j] = input[j+1];
    input[j+1] = tmp;
    }
    }
    }

    // выводим
    for (i = 0; i < count; i++) {
    printf("%d ", input[i]);
    }
    return 0;
    }
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Задача 3"</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    /*
    4. Дан массив целочисленных матриц.
    Вывести матрицы, имеющие наибольшее число нулевых строк.
    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main()
    {
    int a_count;
    printf("Количество матриц: ");
    scanf("%d", &a_count);

    int m_count;
    printf("Размер матриц: ");
    scanf("%d", &m_count);

    int i, j, zer_max = 0, zeros[a_count], array[a_count][m_count];
    memset(zeros, 0, a_count * sizeof(int));

    for (i = 0; i < a_count; i++) {
    printf("Введите элементы %d матрицы: ", i);

    for (j = 0; j < m_count; j++) {
    scanf("%d", &array[i][j]);

    if (array[i][j] == 0) {
    zeros[i]++;
    }
    }

    if (zeros[i] > zer_max) {
    zer_max = zeros[i];
    }
    }

    if (zer_max == 0) {
    printf("Нет ни одной матрицы с нулём");
    return 0;
    }

    // выводим матрицы с максимальным количеством нулей
    for (i = 0; i < a_count; i++) {
    if (zeros[i] == zer_max) {
    for (j = 0; j < m_count; j++) {
    printf("%d ", array[i][j]);
    }
    printf("\n");
    }
    }
    return 0;
    }
     
Загрузка...

Поделиться этой страницей