2014-01-21 6 views
0

Я даю 1000-значное число в качестве входных данных и используя эту программу для поиска максимального продукта из 5 последовательных целых чисел. Массив из используется для хранения последовательности с самым высоким product.I я получаю неожиданный ответ (я подозреваю, что проблема будет в преобразовании из полукокса в целое)ошибка преобразования char to int в c

#include <stdio.h> 
int main(void) 
    { 
    int a[5],c=0,b,i=1; 
    char *num[1000]; 
    scanf("%s",&num); 
    while(i<5) 
    { 
     a[i]=num[i]-'0'; 
     i++; 
    } 
    while(i<1000) 
    { 
     b=(char)num[i]-'0'; 
     if(a[c]<b) 
     { 
      a[c]=b; 
      c=(c+1)%5; 
     }i++; 
    } 
    printf("%d",a[0]*a[1]*a[2]*a[3]*a[4]); 
    return 0; 
} 
+1

Помимо фиксации типа, если вы хотите сохранить 1000 символов, вам нужно выделить дополнительную память для завершающего нуля в конце, поэтому сделайте 'num' не менее 1001. – woolstar

ответ

2

Ваш код выделить и прочитать строку неправильно , Вы выделяете массив из 1000 указателей. Вы намеревались написать:

char num[1000]; 
scanf("%s", num); 

Остальная часть вашего кода также полна ошибок. Вы хотели инициализировать i до 0. И вам нужно установить его обратно до 0 перед вторым циклом. И ваш второй цикл работает до 1000 и поэтому получает доступ к неинициализированным элементам num.

+0

Спасибо за исправление, я действительно хотел сохраняйте значение i как 5 перед вторым контуром – codeln

+0

Уверяю вас, что это не так. Второй цикл считывает неинициализированные значения. –

+0

Да, я должен был инициализировать i до 0, спасибо – codeln