Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Вектор из номеров столбцов (http://forum.oszone.net/showthread.php?t=292911)

alexprom65 22-12-2014 19:31 2446927

Вектор из номеров столбцов
 
Доброго времени суток!
Нужно написать программу, которая принимает на вход размеры массива с его значениями и записывает в вектор номера столбцов, все элементы которых являются числовыми палиндромами. Код написал, но когда нужно вывести этот вектор, вместо ожидаемых значений, какими бы ни были элементы, выводится одно и тоже число: 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 2447050

alexprom65, а можно еще пример входных данных привести? Уж больно лень сочинять :)

Drongo 23-12-2014 00:49 2447066

Да, укажите размерность массива и вводимые значения.

alexprom65 23-12-2014 05:47 2447101

Например, размер 3x3, элементы - 6116 52 5445
74147 84 98789
96369 84 84248

Drongo 23-12-2014 10:37 2447157

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

lxa85 23-12-2014 13:23 2447247

Код:

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 2447409

Цитата:

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

Эти значения разделены пробелами. Это и есть 9 значений. Программа проверяет палиндромы, так что и числа могут быть не маленькие.
Цитата:

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

Блин, слепой, как крот. Так бы никогда не нашёл. Спасибо огромное!


Время: 21:08.

Время: 21:08.
© OSzone.net 2001-