Още една задачка на C

  • Автор Автор Anonymous
  • Начална дата Начална дата
A

Anonymous

Guest
Направете програма,която запълва масив с всички цели положителни числа до зададено N, които са равни на сумата от кубовете на цифрите им.Да се изведе масивът.
Нека ми пише на ЛС човека който беше решил предишната да му дам точка, че загубих линка :?: (и за тази ще има разбира се). Успех!
 
Задачата не е трудна. Понякога се налага човек малко да се напъне. Не знам защо ти я давам - сигурно, защото ми се спи.
Код:
#include<stdio.h>
#include<stdlib.h>
#include<vector>
using namespace std;
int cube(int a)
{
    return a*a*a;
}

int sum_of_cubes_of_digits(int n)
{
    int sum = 0;
    while(n)
    {
        sum += cube(n % 10);
        n/=10;
    }
    return sum;
}

int main() {
    int n;
    scanf("%d", &n);
    vector<int> wtf;
    for(int i = 0; i < n; i++)
    {
        if(sum_of_cubes_of_digits(i) == i)
        {

            wtf.push_back(i);
        }
    }

    // ako iskash masiv
    int nn = wtf.size();
    int * arr = (int*)malloc(nn * sizeof(int));
    for(int i = 0; i < nn; i++)
    {
        arr[i] = wtf[i];
    }

    for(int i = 0; i < nn; i++)
    {
         printf("%d\n",arr[i]);
    }

    return 0;
}
 
начинаещ съм, съжалявам :( Утре сутринта затварям темата със даването на точката, която си заслужи. Благодаря.
 
Сега я компилирах и ето какво излиза :( Много ще съм ти благодарен ако го оправиш, защото незнам как, този език ми е пълна мъгла.
 
Код:
#include<stdio.h> 
#include<stdlib.h> 
#include<vector.h> 
using namespace std; 
int cube(int a) 
{ 
    return a*a*a; 
} 

int sum_of_cubes_of_digits(int n) 
{ 
    int sum = 0; 
    while(n) 
    { 
        sum += cube(n % 10); 
        n/=10; 
    } 
    return sum; 
} 

int main() { 
    int n; 
    scanf("%d", &n); 
    vector<int> wtf; 
    for(int i = 0; i < n; i++) 
    { 
        if(sum_of_cubes_of_digits(i) == i) 
        { 

            wtf.push_back(i); 
        } 
    } 

    // ako iskash masiv 
    int nn = wtf.size(); 
    int * arr = (int*)malloc(nn * sizeof(int)); 
    for(int i = 0; i < nn; i++) 
    { 
        arr[i] = wtf[i]; 
    } 

    for(int i = 0; i < nn; i++) 
    { 
         printf("%d\n",arr[i]); 
    } 

    return 0; 
}


Ако проработи пак дай точката на Rado.
 
Не знам, никога не съм бачкал с Borland C++.
Ползвам CodeBlocks с MinGW компилатор и всичко е OK.
Виж какви грешки ти дава и ги оправи :)
 
Rado каза:
Задачата не е трудна. Понякога се налага човек малко да се напъне. Не знам защо ти я давам - сигурно, защото ми се спи.
Код:
#include<stdio.h>
#include<stdlib.h>
#include<vector>
using namespace std;
int cube(int a)
{
    return a*a*a;
}

int sum_of_cubes_of_digits(int n)
{
    int sum = 0;
    while(n)
    {
        sum += cube(n % 10);
        n/=10;
    }
    return sum;
}

int main() {
    int n;
    scanf("%d", &n);
    vector<int> wtf;
    for(int i = 0; i < n; i++)
    {
        if(sum_of_cubes_of_digits(i) == i)
        {

            wtf.push_back(i);
        }
    }

    // ako iskash masiv
    int nn = wtf.size();
    int * arr = (int*)malloc(nn * sizeof(int));
    for(int i = 0; i < nn; i++)
    {
        arr[i] = wtf[i];
    }

    for(int i = 0; i < nn; i++)
    {
         printf("%d\n",arr[i]);
    }

    return 0;
}

Аз го пробвах на Dev C++ 4 и си се компилира без грешка :)
 
Това което аз промених беше в хедърите беше изпуснато едното .h може от там да му идва проблема :)
 
На мен това ми трябва за училище, а там ги искат задължително в вариант който сме учили от типа:
#include<iostream.h>
cout<<
cin>>
 

Back
Горе