PDA

Показать полную графическую версию : [решено] Вектор из номеров столбцов


alexprom65
22-12-2014, 19:31
Доброго времени суток!
Нужно написать программу, которая принимает на вход размеры массива с его значениями и записывает в вектор номера столбцов, все элементы которых являются числовыми палиндромами. Код написал, но когда нужно вывести этот вектор, вместо ожидаемых значений, какими бы ни были элементы, выводится одно и тоже число: 2293344. Проверял много раз, проходился по коду сам, но всё равно. В чём может быть дело?


#include <stdio.h>
#include <math.h>
int main()
{
int m,n,i,j,k,y,dec,cell,digits,count;
printf("\nType number of strings ");
scanf("%d",&m);
printf("\nType number of columns ");
scanf("%d",&n);
int a[m][n],b[n];
printf("\nType elements of massive\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<m;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%10d\t",a[i][j]);
}
k=0;
for(j=0;j<n;j++);
{
count=0;
for(i=0;i<m;i++)
{
cell=a[i][j];
digits=0;
while(cell!=0)
{
cell=cell/10;
digits++;
}
cell=a[i][j];
dec=(pow(10,(digits-1)));
while(cell>0)
{
if((cell/dec)==(cell%10))
{
cell=(cell%dec)/10;
digits=digits-2;
dec=(pow(10,(digits-1)));
}
else break;
}
if(cell==0)
count++;
}
if(count==m)
{
b[k]=j+1;
k++;
}
}
printf("\nVector is \n");
for(i=0;i<=k;i++)
printf("%6d\t",&b[i]);
scanf("%d",i);
return 0;
}

lxa85
22-12-2014, 23:54
alexprom65, а можно еще пример входных данных привести? Уж больно лень сочинять :)

Drongo
23-12-2014, 00:49
Да, укажите размерность массива и вводимые значения.

alexprom65
23-12-2014, 05:47
Например, размер 3x3, элементы - 6116 52 5445
74147 84 98789
96369 84 84248

Drongo
23-12-2014, 10:37
Так в массив размером 3х3 можно записать 9 значений. А у вас в первом 10, во втором и третьем по 12, как так?

lxa85
23-12-2014, 13:23
for(j=0;j<n;j++);
Лишнию точку с запятой уберите.
for (i = 0; i < k; i++)
printf("%6d\t", b[i]);
Выводить на печать надо не адрес, а содержимое.
И уточнить i < k, а не i <=k

alexprom65
23-12-2014, 20:41
Так в массив размером 3х3 можно записать 9 значений. А у вас в первом 10, во втором и третьем по 12, как так? »
Эти значения разделены пробелами. Это и есть 9 значений. Программа проверяет палиндромы, так что и числа могут быть не маленькие.
Код:
for(j=0;j<n;j++);
Лишнию точку с запятой уберите.
Код:
for (i = 0; i < k; i++)
printf("%6d\t", b[i]);
Выводить на печать надо не адрес, а содержимое.
И уточнить i < k, а не i <=k »
Блин, слепой, как крот. Так бы никогда не нашёл. Спасибо огромное!




© OSzone.net 2001-2012