2 мааааааленьких задачки!!!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Задрот
Сообщения: 9
Зарегистрирован: 14 дек 2007, 21:01

Господа Гуру, поймите, нет времени совсем, учу матан, скоро сессия, а нужно еще две задачки на Си написать, помогите плз. Работаю на Си 2.0(использовать станд. операторы ввода-вывода printf и scanf, стандартные библиотеки stdio.h , stdlib.h, math.h)

1. Определить, является ли число полиндромом (читается взад, вперед одинаково, например 121)

2.Найти максимум среди сумм элементов диагоналей целочисленной квадрат. матрицы, параллельных главной.

черновой листинг для второй:

#include <stdio.h>
#include <math.h>
#include <conio.h>

void main(void)
{
int r,a[10][10],n,i,j,M,s1,s,tmp;
clrscr();
printf("Введите размерность матрицы");
scanf("%d",&n);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
printf("Введите элементы матрицы");
scanf("%d",&tmp);
a[j]=tmp;
}
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{ printf("\n %d ",a[j]);}
r=a[0][0];
for (i=0;i<n;i++)
{
s=0;
s1=0;
for (j=1;j<n-1;j++)
{
s+=a[i+j][j+1];
s1+=a[i+1][n-1-j];
}
if ((s>s1>r)||(s1>s>r)) r=s;
}
printf("\n %d ",r);
getch();
}
Задрот
Сообщения: 9
Зарегистрирован: 14 дек 2007, 21:01

Ну ПЛЗ!!! Последний раз на ближайший год!)))
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

1. Перевести число в строку.
Пока длина строки больше 1 элемента:
-- если последний элемент равен первому, отрезать первый и последний элементы
-- если не равны - число не является палиндромом.
Если в итоге пришли к пустой строке или строке из 1 символа - число является палиндромом
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Задрот
Сообщения: 9
Зарегистрирован: 14 дек 2007, 21:01

А конкретный листинг не подкинете случаем?
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Хыиуду писал(а):1. Перевести число в строку.
Пока длина строки больше 1 элемента:
-- если последний элемент равен первому, отрезать первый и последний элементы
-- если не равны - число не является палиндромом.
Если в итоге пришли к пустой строке или строке из 1 символа - число является палиндромом
Ну, можно и не резать. Зачем нам лишняя кровь? :) Просто вот такой примерно цикл:

Код: Выделить всё

blIsPalindrom = true;
iStrLen = (strlen (str);
for (i =0; i < (iStrLen + 1) / 2); i++) {
  if (str [i] != str [iStrLen - i - 1]) {
     blIsPalindrom = false;
     break;
  };
};
В принципе, условие for можно, пожалуй, даже написть как:
for (i =0; i < iStrLen/ 2); i++)
Разница в том, что при нечетной длине в первом случае средний символ будет сравниваться сам с собой, а во втором - не будет. На конечный результат это не повлияет.
Ответить