Ayuda compilar con gcc (Solucionado)

Imagen de 0110110h
0 puntos

Hola que tal soy novato en c y he aprendido bastante en Ubuntu 7.10, la cuestión es que estoy haciendo programas sencillos en c y los compilo con gcc, creo el ejecutable y luego los ejecuto, así:

 

"El siguiente es un problema que me dieron para resolver en la facultad":

 

Debe ingresarse por teclado una cadena de caracteres <1 y >60, guardarlos en memoria e imprimirlos centrados.

Ejemplo:

 

***********124fesde234d*********

 

El código que yo hice es el siguiente:

 

#include<stdio.h>

 

char a[59];

int n,i,a,l;

int main()

{

printf("ingese cantidad de caracteres de la cadena a ingresar:");

scanf("%d",&a);

 

for(n=0;n<a;i++)

{

printf("\nIngrese el caracter n°%d:",n+1);

scanf("%c",&a[n]);

}

 

l=(60-a)/2;

 

for(n=0;n<l;i++)

{

printf("\t*");

}

 

for(n=0;n<a;i++)

{

printf("\t%c",a[n]);

}

 

for(n=0;n<l;i++)

{

printf("\t*");

}

return 0;

}

 

y no se por que me larga este error al compilarlo:

 

*******@----------:~$ gcc -o Ejercicio-N°1 Ejercicio-N°1.c

T.P.N°1-Ejercicio-N°1.c:4: error: tipos en conflicto para 'a'

T.P.N°1-Ejercicio-N°1.c:3: error: la declaración previa de 'a' estaba aquí

T.P.N°1-Ejercicio-N°1.c: En la función 'main':

T.P.N°1-Ejercicio-N°1.c:13: error: el valor indicado por el subíndice no es ni matriz ni puntero

T.P.N°1-Ejercicio-N°1.c:25: error: el valor indicado por el subíndice no es ni matriz ni puntero

*******@----------:~$

 

Por favor si alguien me da una mano se lo agradecería mucho por que tengo que ponerme a hacer varios ejercicios y no pienso usar otra ves uindous. Desde ya muchas gracias.

Imagen de RGthundRclap
+1
0
-1

Te vas a reir cuando te lo diga :)

linea 3: char a;

linea 4: int a;

 

estas declarando dos variables con el mismo nombre 

+1
0
-1
Imagen de RGthundRclap
+1
0
-1

eso de entrada, no he revisado bien el algoritmo del programa pero creo que el fayo en main es q &a solo se lo podrias hacer a un puntero. no me hagas mucho caso, solo soy 1 aficionado

+1
0
-1
Imagen de 0110110h
+1
0
-1

huy¡¡¡¡¡¡¡¡¡¡¡

si ahora lo compilo sin ningun problema, pero el algoritmo no hace lo que tiene que hacer, mañana lo arreglo y te cuento por que me voy a cursar. muchas gracias.....jajaja

+1
0
-1
Imagen de 0110110h
+1
0
-1

Bueno ya revise el prog. lo arregle lo compile y anduvo perfecto.

 

Los mas importante es que comprobé que es lo mismo programar en C en Windoos que en ubuntu, ya se algunos van a decir ¡¡¡o por supuesto descubrió vida en marte dos veces seguidas!!! , pero la duda que tenia era sobre si la librerías serian las mismas con los mismos nombres, etc. y si las sintaxis serian las mismas, bueno es así a excepción que no existe la molesta libreria conio.h y el getch() que solo eran para frenar el cursor y que en ves de poner "void main() ó void main(void)" al principio, solo se pone "int main()". Bueno de nuevo muchas gracias.

 

+1
0
-1
Imagen de RGthundRclap
+1
0
-1

Bueno. para programas de consola las librerias x lo general son las mismas. pero para programas gráficos ya no está el famoso windows.h  ni nada de eso. aquí hay otras librerias para ese fin y a mi juicio son mas faciles de emplear ya que no varía la sintaxis (windows.h es privado y a saber como funciona, ad+ me tiene desanimado con su "notación hungara)

yo en particular, en windows también usaba int main() 

respecto al conio.h nose.. en windows nunca lo había usado. creo que el stdio ya lo trae.

y lo de getch().. yo usaba otras técnincas. en windows al ejecutar 1 prgrama de "terminal" se procesa y se cierra. aquí también.  si abres una terminal y desde allí lo ejecutas la terminal no se cierra, y creo que en windows tampoco.

yo en lugar de getch() al principio usaba el system(pause) o cin.get , pero si piensas: ¿para qué quiero que no se cierre? para interactuar con el programa quizas?? ;)   pues allí es cuando empezé a utilizar la tecnica de "funcion salir()".   en la primera linea de main creaba un layer (inicio:).  al final estaba la función salir. que te praguntaba Salir?(s/n) y luego un std::cin>>salida;   es decir, entrada de teclado para asignar valor a una variable, y mientras hace eso, el programa te espera;).   Asique:

int main(){
     inicio:
    .....
    .....
    salir();
    return 0;

void salir(){
    char Salida;
    std::cout<<"Salir?(s/n)";
    std::cin>>Salida;
    if(salida=='n') goto inicio;
    else return 0;
}

u otras opciones con la misma técnica 

Nose si me he explicado. lo que quiero decir es que, aunque los efectos prácticos sean los mismos, lo lógico es que el programa nos espere para que podamos interactuar con él.  

+1
0
-1
Imagen de 0110110h
+1
0
-1

Si eso es lo q he averiguado, en linux no hace falta la librería conio.h ni el el getch(), por que cuando se termina de ejecutar el programa en un terminal, aparece xxxxxxxxx@xxxxxx:~$ q frena el proceso y te permite que veas lo que hizo el programa.

 

Por otro lado, tienen idea como hago para que una ves compilado el código fuente en un ejecutable, pueda ejecutarse directamente haciendo clic en el ejecutable y no introduciendo en un terminal ./nombre_del_ejecutable.

 

Gracias

+1
0
-1
Imagen de Goyo
+1
0
-1

Tienes que dale al archivo permisos de ejecución. Los permisos se pueden cambiar más o menos como en Windows o con el comando chmod.


Equipo de moderadores
Normas

Documentación
+1
0
-1
Imagen de 0110110h
+1
0
-1

Muchas gracias, ya que estamos aprobecho para hacerte otra pregunta. Resulta que hace tiempo estoy buscando algun software o pequeño programita tipo benchmark que calcule los FLOPS de una PC, y si con una página: "http://performance.netlib.org/performance/html/flops.html"

Y baje un programita llamado flops-2.0, es un archivo binario. La pregunta es como hago para ejecutarlo? 

 

+1
0
-1