Gostaria de pedir ajuda com esse programa
Como é que 1, 8, 17, 18, 26 e 27 são iguais à 8^3 ou 512 ?
Explica melhor o que você quer fazer.
Eu acho que é assim:
1³ = 1 => 1 = 1
8³ = 512 => 5 + 1 + 2 = 8
17³ = 4913 => 4 + 9 + 1 + 3 = 17
Qual é exatamente a sua dúvida? Você só deve realizar os procedimentos assim e checar se é verdadeiro.
function atividade() {
for (i=0;i<30;i++) {
var resultado da multiplicaçao cubica de cada numero = i*i*i;
var resultado da multiplicaçao cubica dividos em um vetor de string por posiçao = cubica.toString().split('');
var resultadoSomaInt = posiçao 1 do vetor de string + posiçao 2 do vetor de string + posiçao 3 do vetor de string;
if (resultadoSomaInt == i) {
printf(i);
}
}
}
EXEMPLO:
function atividade() {
for (i=0;i<30;i++) {
var cubica = i*i*i;
var somaValores = cubica.toString().split('');
var resultadoSomaInt = parseInt(somaValores(1), 10) + parseInt(somaValores(2), 10) + parseInt(somaValores(2), 10);
if (resultadoSomaInt == i) {
print(i);
}
}
}
Em Javascript é assim, mas em C não sei como fazer.
Seria a mesma coisa, exceto que no C não parece ter um método nativo para quebrar a String como em outras linguagens! Não sei muito de C, mas pesquisando conseguir montar esse código:
#include <stdio.h>
#include <string.h>
int main(void) {
for(int i = 1; i <= 30; i++) {
long num = i * i * i;
char numEmString[50];
sprintf(numEmString, "%ld", num); // Convertendo para String
int somaDosDigitos = 0;
int tamanho = strlen(numEmString); // Tamanho da String
// Somando todos os digitos!
for(int j = 0; j < tamanho; j++) {
int digito = numEmString[j] - '0'; // Convertendo char para Int
somaDosDigitos += digito;
}
if(somaDosDigitos == i) {
printf("%d\n", i);
}
}
return 0;
}
Bom, se você tem que testar os números de 1 a 30, faça um for de 1 a 30 
Depois, para cada número:
- calcule o número elevado ao cubo
- some os dígitos do cubo
- veja se o resultado é igual ao número
Assim:
for (int i = 1; i <= 30; i++) {
int n = i * i * i; // número ao cubo
// calcula a soma dos dígitos
int somaDigitos = 0;
while (n > 0) {
somaDigitos += n % 10; // resto da divisão por 10 = último dígito
n /= 10; // divide por 10, eliminando o último dígito
}
if (somaDigitos == i) { // se a soma dos dígitos é igual ao número
printf("%d\n", i);
}
}
Veja que para somar os dígitos basta fazer outro loop:
- pego o último dígito (que é o resto da divisão por 10:
n % 10) - depois divido o número por 10 (assim o último dígito é eliminado, e na próxima iteração pegarei o penúltimo dígito)
- e assim por diante, até o número ser zero
Não precisa transformar o número em string, é uma volta desnecessária.
Não precisa converter para string, dá pra fazer só com matemática (veja minha resposta acima) 
Muito obrigada a todos, me ajudou muito!!!