2014-09-15 5 views
-3

Voici le code que je l'ai écrit -150 chiffres en C

#include<stdio.h> 
#include<string.h> 

int main() 
{ 
    char numbr_1[150]; 
    char numbr_2[150]; 
    int ansr[22500]; 
    int i, j, d1, d2, n2, n1, ans, c, l1, l2, fl = 22500, temp1 = 0, temp2 = 0; 
    clrscr(); 
    printf("Enter 1st number"); 
    gets(numbr_1); 
    printf("Enter 2nd number"); 
    gets(numbr_2); 

    l1 = strlen(numbr_1); 
    l2 = strlen(numbr_2); 

    for (i = 0; i < fl; i++) 
     ansr[i] = 0; 

    c = 0; 

    for (i = l1 - 1; i >= 0; i--) { 
     for (j = l2 - 1; j >= 0; j--) { 

      n1 = numbr_1[i] - 48; 
      n2 = numbr_2[j] - 48; 
      ans = n1 * n2; 

      temp2 = fl - c - (l2 - j); 
      ansr[temp2] += ans; 
      while (ansr[temp2] > 9) { 
       temp1 = ansr[temp2]; 
       ansr[temp2] = ansr[temp2] % 10; 
       ansr[temp2 - 1] += temp1/10; 
       temp2--; 
      } 
     } 
     c++; 
    } 

    i = 0; 

    while (ansr[i++] == 0); 

    for (j = --i; j < fl; j++) 
     printf("%d", ansr[j]); 

    getch(); 
    return (1); 
} 

Il fonctionne très bien pour répondre à moins de 22500 chiffres, il fonctionne même pour les 22499 chiffres qui est de 149 chiffres numéro * 150 chiffres Numéro Je voulais juste savoir est-ce une certaine incapacité ou C ou si je fais quelque chose de mal.

+0

Pourriez-vous formater votre code? – taocp

+0

format ?? Je ne t'ai pas eu ??? –

+0

Je voulais dire: utiliser une indentation appropriée pour le rendre plus facile à lire. – taocp

Répondre

3

Le problème est un débordement de tampon simple. Vous lisez dans 150 chaînes de caractères, mais vos tampons de chaîne ont seulement 150 caractères - il n'y a pas de place pour le caractère nul final.

+0

Donc, je peux faire quelque chose pour le faire fonctionner ??? –

+0

@SHANTANUSINGH faites vos tampons 151 caractères, ou même plus grand si vous voulez être vraiment en sécurité. Rendez votre tampon de sortie plus grand aussi. –

+0

Je suis réellement tout à fait nouveau avec C, pouvez-vous aider avec comment faire cela ... J'ai essayé google mais il donne la réponse pour seulement JAVA –