J'essaie de créer un programme qui prendra une entrée de deux entiers de taille 10 et moins, qui compte le nombre d'opérations de report résultant de la somme des entiers d'entrée.Erreur lors de l'augmentation de la taille de la valeur de tableau 1 erreur
Par exemple:
Exemple d'entrée:
Exemple de sortie:
La ligne qui renvoie une erreur dans mon programme est la suivante:
parta[i+1] = (parta[i+1] + 1)
Là j'essaye d'ajouter 1 à la valeur actuellement dans la position de tableau suivante.
run = true
while run == true
#input string
text = gets.chomp
#split string and remove space
parta = text.split[0]
partb = text.split[1]
#convert split strings to integers
partf1 = parta.to_i
partf2 = partb.to_i
#check for terminal input of 0
if partf1 + partf2 <= 0
run = false
end
#fill strings with 0s to size 11
parta = sprintf("%011i", parta)
partb = sprintf("%011i", partb)
#convert strings to arrays of integers
parta = parta.split("").map(&:to_i)
partb = partb.split("").map(&:to_i)
count = 0
(10).downto(0) do |i|
if (parta[i] + partb[i]) > 9
count = count + 1
parta[i+1] = (parta[i+1] + 1)
#59864417 974709147 test input should output 6
end
end
if run == true
puts "#{count} carry operations."
end
end
Quand je cours, je reçois le message d'erreur suivant:
test5.ruby: 42: dans block in <main>': undefined method
+ » pour nil: NilClass (NoMethodError) de test5.ruby: 29: dans downto' from test5.ruby:29:in
Quelqu'un peut-il m'aider? :)
quelle erreur vous avez obtenu? – mic4ael
message d'erreur j'obtenir: test5.ruby: 42: dans 'bloc dans ': méthode définie' +' pour nil: NilClass (NoMethodError) \t de test5.ruby: 29: dans 'downto » \t de test5.ruby : –
pugs
Je suppose qu'il y a une approche plus simple dans l'ensemble, mais pour votre problème particulier: l'indice le plus élevé dans le tableau est '10', non? Dans ce cas, quand 'i' est 10,' parta [i + 1] '(sur le côté droit) est' nil', car il n'y a aucun élément dans le tableau avec cet index. Lorsque vous essayez d'incrémenter 'nil', vous obtenez une erreur. Ne devrait-il pas être 'parta [i-1] = parta [i-1] + 1' de toute façon? – Max