Id returned 1 Exit status

Asked

Viewed 977 times

-1

A number is said to be Capicua when read from left to right is the same as when read from right to left. For example: the number 320023 is Capicua, while the number 1872681 is not. Then construct a function in C to check if an integer read is Capicua. The function must return 1 if the number is Capicua and 0 otherwise. Escreva também um algoritmo que lê ”n” números e escreve junto a cada um deles a mensagem “SIM” se o número é “capicua” e “NÃO” no caso contrário. Do not use "if" or "case" commands.

In my algorithm occurs the error mentioned in the title.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define color "color 1F"

int capicua(int n);
int propriedade(int n);
void ler_capicua();

int main(int agrc, char *argv[]){

int n;
system(color);
setlocale(LC_ALL,"");

printf("Digite um número: ");
scanf("%d",&n);
capicua(n);
ler_capicua();
propriedade(n);
}

int capicua(int n){

  int x=n, r=0;

while(x!=0){
    r=r*10;
    r=r+x%10;
    x=x/10;
}

if(n==r){
    printf("%d é um número \"capicua\"",n);
}

else{
    printf("%d não é um número \"capicua\"",n);
}

  sleep(3);
  system("cls");
}

int propriedade(int n){

  int contrario=0, aux=n, x, i;

printf("Digite um número para saber se possui essa propriedade: ");
scanf("%d",&n);

printf("Quantos algarismos esse número possui? ");
scanf("%d",&x);

for(i=0;i<n;i++){
    contrario=contrario*10;
    contrario=contrario+aux%10;
    aux=aux/10;
    if(aux==0) break;
}

if(n==contrario) return 1;
else return 0;

  sleep(3);
  system("cls");
}

void ler_capicua(){
  int n, i;

printf("\nInsira quantidade de números que queria calcular: ");
scanf("%d",&i);

while(i>0){
    printf("\nInsira o número: ");
    scanf("%d",&n);
    if(capicua(n) == 1) printf("SIM");
    else print("NÃO");
    i--;
}   
}
  • First, I suggest you use identation.

1 answer

0

While executing your code the error that appeared was

/tmp/ccXQBEq3: in function `ler_capicua':

file. c:(.text+0x25c): indefinite reference to `print'

collect2: error: Ld returned 1 Exit status

I didn’t get to fully test and validate your code, but some good practices I can recommend:

  1. Read every error message, so you can get a better idea of what’s going on. In your case, at least based on what the compiler reported here, it became clear that there is a call to an undefined function called print (this appears at the very end of your code). Switch to printf that works.
  2. Use identation. It is much easier to see the instructions that are part of your functions, condition structures, selection etc.

EDITION: I made a small change to the code, but you can get used to it, which was removing the else after a return. He is unnecessary.

See the corrected code:

#include <stdio.h>
#include <stdlib.h>

int capicua(int n);
int propriedade(int n);
void ler_capicua();

int main(int agrc, char *argv[]) {
    int n;
    printf("Digite um número: ");
    scanf("%d",&n);
    capicua(n);
    ler_capicua();
    propriedade(n);
}

int capicua(int n) {
    int x = n, r = 0;
    while (x != 0) {
        r=r*10;
        r=r+x%10;
        x=x/10;
    }
    if (n == r)
        printf("%d é um número \"capicua\"",n);
    else
        printf("%d não é um número \"capicua\"",n);
}

int propriedade(int n) {
    int contrario = 0, aux = n, x, i;
    printf("Digite um número para saber se possui essa propriedade: ");
    scanf("%d",&n);
    printf("Quantos algarismos esse número possui? ");
    scanf("%d",&x);

    for (i = 0; i < n; i++) {
        contrario = contrario * 10;
        contrario = contrario + aux % 10;
        aux = aux/10;
        if (aux == 0) break;
    }

    if (n == contrario) return 1;
    return 0;
}

void ler_capicua() {
    int n, i;
    printf("\nInsira quantidade de números que queria calcular: ");
    scanf("%d", &i);

    while (i > 0) {
        printf("\nInsira o número: ");
        scanf("%d",&n);
        if (capicua(n) == 1) printf("SIM");
        else printf("NÃO");
        i--;
    }   
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.