Muy buenas ,C:\Users\matia\Desktop\c++\collect2.exe[Error] ld returned 1 exit status

Iniciado por chikardo, 9 Noviembre 2020, 19:25 PM

0 Miembros y 1 Visitante están viendo este tema.

chikardo

Hola buenas estuve todo el dia tratando de entender cual es mi error , y no lo encuentro , si me dijeran cual es el problema o me lo solucionaran ,seria un gran alivio para mi , desde ya muchas gracias.
Les dejo el codigo : (Es un codigo en c++ de rounb robin con quantium 5)

Código (cpp) [Seleccionar]

#include<iostream>
#include<conio.h>
using namespace std;

void piladebusqueda(int pnt ,int tm);
void piladebusqueda2(int pnt ,int tm);
void anadir(int pnt);

int llegada[50];
int espera[50];
int fin[50]={0};
int quantium;
int rqi[50]={0};
int btm[50]={0};
int c=0;
int st;
int flg=0;
int tm=0;
int noe=0;
int pnt=0;
int servicio;
int esper;
float prom_servicio;
float prom_espera;



void piladebusqueda1(int pnt,int tm){
for(int x=pnt+1;x<5;x++){
if(llegada[x]<=tm){
rqi[noe]=x+1;
noe++; }
}
}


void piladebusqueda2(int pnt,int tm){
for(int x=pnt+1;x<5;x++){
int fl=0;
for(int y=0;y<noe;y++){
if(rqi[y]==x+1){
fl++;}}
if(llegada[x]<=tm && fl==0 && btm[x]!=0){
rqi[noe]=x+1;
 noe++;}
}
 }
 
 
 int main(){
  cout<<"\n\tAlgoritmo Round Robin\n";
 
 
 
  for(int x=0;x<5;x++){
  cout<<"\nProceso"<<x+1;
  cout<<"\nTiempo de llegada=";
  cin>>llegada[x];
  cout<<"\nTiempo de servicio";
  cin>>espera[x];
     btm[x]=espera[x];}
     cout<<"\nIngresa el quantum por favor:";
     cin>>quantium;
     system("CLS");
     
     do{
      if(flg==0){
      st=llegada[0];
      if(btm[0]<=quantium){
      tm=st+btm[0];
      btm[0]=0;
      piladebusqueda1(pnt,tm);}
      else{
      btm[0]=btm[0]*quantium;
      tm=st+quantium;
      piladebusqueda1(pnt,tm);
      anadir(pnt);}
 }
 else{
  pnt=rqi[0]-1;
  st=tm;
 
 
  for(int x=0;x<noe && noe!=1;x++){
rqi[x]=rqi[x+1]; }
noe--;




if(btm[pnt]<=quantium){
tm=st+btm[pnt];
btm[pnt]=0;
piladebusqueda2(pnt,tm);}
else{
btm[pnt]=btm[pnt]-quantium;
tm=st+quantium;
piladebusqueda2(pnt,tm);
anadir(pnt);}
 }
 if(btm[pnt]==0){
  fin[pnt]=tm;
 }
 flg++;
 }while(noe!=0);
 cout<<"\n\nPROCESOS\tTIEMPO DE LLEGADA\tTIEMPO DE SERVICIO\tTIEMPO FINAL\tTIEMPOS DE RESPUESTAS\tTIEMPO DE ESPERA\n";
 for(int x=0;x<5;x++){
  servicio=fin[x]-llegada[x];
  esper=servicio-espera[x];
  cout<<"proceso"<<x+1<<"\t\t"<<llegada[x]<<"\t\t"<<espera[x]<<"\t\t"<<fin[x]<<"\t\t"<<servicio<<"\t\t\t"<<esper<<"\t\t";
  prom_espera=prom_espera+esper;
  prom_servicio=prom_servicio+servicio;
 }
     cout<<"\n Tiempo promedio de servicio:" <<prom_servicio/5<<"\n Tiempo promedio de espera:"<<prom_espera/5;
 }




MOD: Etiquetas de Código GeSHi insertadas

K-YreX

Antes que nada, para futuras publicaciones introduce tu código entre etiquetas de Código GeSHi seleccionando el lenguaje adecuado.
En este caso ya lo he modificado yo, pero como digo, para otra ocasión.

En un primer vistazo veo:
  • La función <piladebusqueda(int, int)> no está implementada, sólo está definida.
  • Y la función <anadir()> más de lo mismo.

    Como consejos te diría que:
  • Las variables globales no son recomendables.
  • No utilices la biblioteca <conio.h> de no ser estrictamente necesario (tu caso no lo parece). No es estándar.

    Y como consejo para las publicaciones en este o cualquier otro foro:
  • Asegúrate de que el código es fácil de entender. Tanto en cuanto a nombres de variables/funciones como a identación.
  • Especifica tu error. Copia el error que te aparezca o comenta la situación concreta en la que el programa falla. Acota el error lo máximo posible para que quien te ayude pueda ir directo a una zona.

    Si pegas tu código diciendo que hay un error y que alguien te lo solucione, no creo que haya muchos dispuestos a hacerlo. En cambio si dices: "me sale el siguiente error al compilar: <copias el error>" o "para el caso ... funciona bien pero para el caso ..., no"; seguramente haya más personas dispuestas a ayudar.




    EDIT: Después de responder ya he visto el mensaje de error (en el asunto del tema).
    Puede ser que tengas el mismo programa ejecutándose y no lo hayas finalizado. Comprueba eso.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

chikardo

Muchas gracias K-YreX , perdon por no a ver puesto bien la descripcion del problema , soy nuevito en el foro , lo implementare para la proxima , muchas gracias.
Con respecto a la solucion que me planteas , se lo pase a un amigo y le sale el mismo error en su pc , por lo tanto descarto que sea porque tengo un programa similar compilándose
.

Danielㅤ

Hola, el compañero no se refiere a compilandose, sino a ejecutándose.
Por ejemplo puede suceder que tú programa se cierre solo, o que lo cerres vos, pero el proceso puede quedar abierto y necesitas darle un kill, es decir matar el proceso.

En tu programa borra los primeros espacios en esta parte

  int main(){

y la última llave al final del código también déjala así:

}

es decir sin espacio antes de ella.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

chikardo

Muchas gracias[D]aniel , probe eso y tampoco funciono , entendi lo que me comentaste , de que el proceso podia estar todavia activo por lo tanto , abri el monitor de recursos y busque si estaba algun proceso y no encontre ninguno :(. No sabrias que otro problema podria ser? Busque 40 veces el error en el codigo y no lo encuentro.

Danielㅤ

Podrías por favor dejarnos el mensaje de error completo? Así podamos saber un poco más cuál puede ser el problema.

Esta parte me llama la atención:

cout<<"proceso"<<x+1<<"

proceso es un string y lo estás intentando unir con un tipo int por lo que eso dará error, no se en C++ pero al menos en Python hay que pasar de int a string, es decir hacer el cálculo el int, luego pasarlo a string y después unirlo, también podes usar la función eval() para hacer el cálculo y unir con cadenas string.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Eternal Idol

[Error] ld returned 1 exit status

Te da un error al enlazar y seguramente es por lo que te dijo K-YreX, se compila correctamente pero no encuentra por ningun lado algun simbolo (la funcion anadir en este caso, tenes que valga la redundancia añadir su codigo).
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Danielㅤ

Además de lo que te comentan los compañeros de la función anadir, también he descubierto otro error, al principio del código haces mención a otra función que no existe:

void piladebusqueda(int pnt ,int tm);
void piladebusqueda2(int pnt ,int tm);

la función que no existe es esta:

piladebusqueda

pero la que vos tenés en tu código que si existe es esta otra:

piladebusqueda1

es decir una tiene un 1 al final y la otra no, corrige eso y luego nos comentas.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

K-YreX

Cita de: [D]aniel en  9 Noviembre 2020, 22:11 PM
Esta parte me llama la atención:
cout<<"proceso"<<x+1<<"

proceso es un string y lo estás intentando unir con un tipo int por lo que eso dará error, no se en C++ pero al menos en Python hay que pasar de int a string, es decir hacer el cálculo el int, luego pasarlo a string y después unirlo, también podes usar la función eval() para hacer el cálculo y unir con cadenas string.

Saludos
En C/C++ no es necesario castear esos valores.
Ese código es válido.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

Danielㅤ

Bien, muchas gracias por la aclaración K-YreX no estaba seguro si C/C++ podía concatenar valores string con int.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!