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

velran322

New member
15.01.2013
1
0
#1
В общем ребят, прошу помощи. Есть три выполненные задачи на 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;
}