|
|
#1 |
|
Новичок
|
Код:
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
struct coord {
double x, y;
};
struct point {
coord t;
point *next;
};
coord a[100];
int main ()
{
int n, i, j, maxn, minn;
double min, max;
freopen("input.txt", "rw", stdin);
freopen("output.txt", "wt", stdout);
scanf("%d", &n);
scanf("%lf%lf", &a[0].x, &a[0].y);
min = a[0].y;
max = min;
maxn = minn = 0;
for (i = 1; i < n; i++) {
scanf("%lf%lf", &a[i].x, &a[i].y);
if (a[i].y > max) {
max = a[i].y;
maxn = i;
}
if (a[i].y < min) {
min = a[i].y;
minn = i;
}
}
point.t = a[maxn];
}
<<point.t = a[maxn];>> вылетает <<error C2143: синтаксическая ошибка: отсутствие ";" перед ".">> причём, 2 раза. |
|
|
|
|
|
#4 |
|
Модератор
|
Помогите плз с задачей. Не могу понять почему стопится выполение
![]() Задача
Натуральное число называется палиндромом, если оно читается одинаково с обеих сторон, например, 171. Возьмём любое число. Если оно не палиндром, то перевернем его и сложим с исходным. Если не получится палиндром, то проделаем с ним то же и т.д. пока не получится палиндром. Для всех чисел от 100 до 200 найти, через сколько шагов получится палиндром и какой. Что получилось у меня
Код:
# include<iostream>
# include<math.h>
int pere(int x) {
int i,imax,y, mas[100],z;
for (i=0; x>0; i++) {
mas[i]=x%10;
x/=10;
}
imax=i-1;
for(z=pow(10,imax),i=0,y=0; i<=imax; z/=10,i++) {
y+=mas[i]*z;
}
return(y);
}
using namespace std;
int palin(int x ){
int i,j, m[1000];
for (i=0; x>0; i++) {
m[i]=x%10;
x/=10;
}
i=i-1;
for (j=i,i=0;i<j; i++,j--) {
if (m[i] != m[j]) return 0;
}
return 1;
}
int main() {
int ch,i,sum;
for(ch=100; ch<=200; ch++) {
cout<<ch;
if (palin(ch)==1) cout<<" palindrom\n";
else {
i=0; sum=ch;
while (palin(sum)==0) {
sum=ch+pere(sum);
i++;
}
cout<<" "<<sum; cout<<" kol_shagov - "<<i<<endl;
}
}
}
Выводит до 161, 162 уже почему-то не пишет
Код:
100 101 kol_shagov - 1 101 palindrom 102 303 kol_shagov - 1 103 404 kol_shagov - 1 104 505 kol_shagov - 1 105 606 kol_shagov - 1 106 707 kol_shagov - 1 107 808 kol_shagov - 1 108 909 kol_shagov - 1 109 121 kol_shagov - 3 110 121 kol_shagov - 1 111 palindrom 112 323 kol_shagov - 1 113 424 kol_shagov - 1 114 525 kol_shagov - 1 115 626 kol_shagov - 1 116 727 kol_shagov - 1 117 828 kol_shagov - 1 118 929 kol_shagov - 1 119 414 kol_shagov - 62 120 141 kol_shagov - 1 121 palindrom 122 343 kol_shagov - 1 123 444 kol_shagov - 1 124 545 kol_shagov - 1 125 646 kol_shagov - 1 126 747 kol_shagov - 1 127 848 kol_shagov - 1 128 949 kol_shagov - 1 129 828 kol_shagov - 35 130 161 kol_shagov - 1 131 palindrom 132 363 kol_shagov - 1 133 464 kol_shagov - 1 134 565 kol_shagov - 1 135 666 kol_shagov - 1 136 767 kol_shagov - 1 137 868 kol_shagov - 1 138 969 kol_shagov - 1 139 161 kol_shagov - 10 140 181 kol_shagov - 1 141 palindrom 142 383 kol_shagov - 1 143 484 kol_shagov - 1 144 585 kol_shagov - 1 145 686 kol_shagov - 1 146 787 kol_shagov - 1 147 888 kol_shagov - 1 148 989 kol_shagov - 1 149 505 kol_shagov - 10 150 252 kol_shagov - 2 151 palindrom 152 1111 kol_shagov - 103 153 585 kol_shagov - 24 154 5555 kol_shagov - 10 155 22122 kol_shagov - 53 156 7557 kol_shagov - 121 157 686 kol_shagov - 40 158 383 kol_shagov - 36 159 393 kol_shagov - 9 160 282 kol_shagov - 2 161 palindrom |
|
|
|
|
|
#5 |
|
Пользователь
|
подозреваю, что в 46 строке
Код:
sum=ch+pere(sum); Код:
sum=sum+pere(sum); 162+261=423 . 423 - не палиндром. Дальше производим операцию над числом 423 423+324=747 747 - палиндром. У вас же первое слагаемое всё время исходное число 162.
__________________
Gentoo user Последний раз редактировалось zhekas; 08.10.2010 в 03:36. |
|
|
|
| Благодарности: 1 | SoaT (08.10.2010) |
|
|
#6 | ||||||||||||||||||||||||
|
Модератор
|
zhekas, ты пробовал откомпилить и запустить? У меня на g++ 4.4.5 стопится. И на винде в VS 6.0 (синтаксис изменялся само-собой) тоже стопится. Последний раз редактировалось SoaT; 08.10.2010 в 09:51. |
||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||
|
|
#9 |
|
Пользователь
|
Боюсь, что они длиннее чем вы думаете. И замена даже на long их не спасает. Хотя вру. у меня просто int и long -это один и тот же тип.
Хотя sum вполне может перескакивать через максимальное значение, И получится не правильный ответ.
__________________
Gentoo user Последний раз редактировалось zhekas; 08.10.2010 в 16:46. |
|
|
|
|
|
#11 |
|
Пользователь
|
За счет того что unsigned всегда положительный вы могли и не заметить перехода за максимальное значение.
Более того с помощью отладчика gdb можно заметить, что для ch=196 при i=30 sum меняется с sum=3121672202 на sum=849466119 То есть sum уменьшилась. А этого не может быть sum может только возрастать. Значит sum перескочило через максимальное значение
__________________
Gentoo user Последний раз редактировалось zhekas; 08.10.2010 в 18:50. |
|
|
|
| Благодарности: 1 | SoaT (08.10.2010) |
|
|
#13 |
|
Пользователь
|
В принципе, тут надо работать не с числами а с массивом разрядов (тем более вы и так сначала преобразуете число в массив разрядов, а потом обратно). От этого массива требуется только операция сложения, что достаточно просто.
Число 196 После 48150 шагов так и не преобразовалось в палиндром. sum имеет 20000 знаков, С остальными числами всё в порядке. Числа 177 и 187 обрели свои настоящие палиндромы. Добавлено через 1 час 10 минут Код:
# include<iostream>
# include<math.h>
const int m=20000;
int sum[m],n;
int pere() {
int i,p, mas[m];
for (i=0; i<n; i++) {
mas[i]=sum[i];
}
p=0;
for(i=0;i<n;i++) {
sum[i]=(mas[i]+mas[n-1-i]+p)%10;
p=(mas[i]+mas[n-1-i]+p)/10;
}
if (p!=0)
{
sum[n]=p;
n=n+1;
}
return 0;
}
using namespace std;
int palin(){
int i,j;
for (j=n-1,i=0;i<j; i++,j--) {
if (sum[i] != sum[j]) return 0;
}
return 1;
}
int main() {
int ch,i,j;
for(ch=100; ch<=200; ch++) {
cout<<ch;
sum[0]=ch%10;
sum[1]=(ch%100)/10;
sum[2]=ch/100;
n=3;
if (palin()==1) cout<<" palindrom\n";
else {
i=0;
while ((palin()==0)&(n<m)) {
pere();
i++;
}
cout<<" ";
if (n>=m)
cout<<" ne_nashel ";
else
for (j=n-1;j>=0;j--)
cout<<sum[j];
cout<<" kol_shagov - "<<i<<endl;
}
}
}
__________________
Gentoo user Последний раз редактировалось zhekas; 09.10.2010 в 03:20. |
|
|
|
| Благодарности: 1 | SoaT (15.10.2010) |
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| COD4: Решение возникающих проблем | Hirurg | Call Of Duty 4 | 1132 | 22.01.2018 01:11 |
| Решение проблем | MDM | Mozilla Firefox | 1244 | 21.01.2018 17:22 |
| CoD2: Решение проблем | aurea | Call Of Duty 2 | 1535 | 17.06.2013 03:43 |
| COD5: Решение возникающих проблем | MDM | Call Of Duty 5 | 23 | 05.04.2010 16:30 |
| FEAR: Решение проблем | MDM | F.E.A.R. | 265 | 06.01.2010 18:38 |