Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NOB2014

#351
Cita de: rir3760 en 15 Enero 2014, 02:09 AM
Ya los estas utilizando. El operador "[]" es uno binario y requiere que uno de sus operandos (no importa cual) sea un puntero.

Tengo una duda:
¿Cuando el identificador de un array puede no ser un puntero?(el apuntador constante a el primer elemento del array).-
Si me la pudieras aclarar me seria de mucha utilidad.-

Saludos
#352
Hola.
Muchas gracias a ambos, que lastima que todavía no llegué a estudiar memoria dinámica, creo que viene más allá de los apuntadores.-

Saludos.
#353
Hola.
Una consulta más, ¿tiene sentido hacer este mismo código con punteros teniendo en cuenta que el nombre de un arreglo es un apuntador, o el nombre de un arreglo es la dirección del primer elemento que contiene el arreglo?.-
Si esto es conveniente necesitaría toda la teoría posible porque estoy estudiando apuntadores y nunca pude resolver esta incógnita, y además ¿sería más conveniente con arreglos de punteros?.- 

Saludos y gracias.-
#354
Hola.

Citar¿Qué número POSITIVO no es mayor o igual a 0?
O pones i<longitud+1 o pones int en vez de unsigned int.

De acuerdo, inocente error el mío, i<longitud+1 no me funciona.
Quitando unsigned si.-

Gracias a los tres.- 
Saludos.
#355
Hola.
Esto debe ser sencillo pero no logro resolverlo, el caso es que no  me acepta esta línea de código.-

//for(i=longitud; i>=0; i--,j++)

Me da el siguiente error, no al compilar sino al ejecutar.-



#include <stdio.h>
#include <string.h>

int main(void){
unsigned int enteros[]={15,12,28,18,05,33,21},i=0, longitud=0, copia[7], j=0;
longitud = sizeof enteros / sizeof *enteros;

printf("\n Original....:");
for(i=0; i<longitud; i++){
printf("%d ", enteros[i]);
}

//for(i=longitud; i>=0; i--,j++){
for(i=longitud; i>0; i--,j++){
copia[j] = enteros[i];
}

printf("\n\n Invertido...:");
for(i=0; i<longitud; i++){
printf("%d ", copia[i]);
}

return 0;
}


Bueno espero de vuestra ayuda.-       
Saludos.
#356
Hola.
Excelente simplificaste mucho mi código, muchas gracias.-

Citarfgets Leerá hasta n-1 caracteres o hasta que lea un retorno de línea (\n).
En este último caso , el carácter de retorno de línea también es leído.-

Saludos.
#357

Hola.
Por favor me podrían probar el programa para que me digan si encuentran algún    error, estoy totalmente obnubilado y necesito de mentes frescas para que constaten si  definitivamente no los tiene (más allá de que se ingresen  100 dígitos).-
       
#include <stdio.h>
#include <stdlib.h>

void limpiar(char[], int);

int main(void){
unsigned int ok=0, longitud=0, i=0, ch=0;
char numeroChar[100] = "";

do{
system("cls");
printf("\n\n Ingrese un entero (maximo 9999)....:");
fgets(numeroChar, 100, stdin);
longitud = strlen(numeroChar);
i=0;
if(longitud >=4){
limpiar(numeroChar, longitud);
}
longitud = strlen(numeroChar);

printf("\n\n Ingresaste..: %s", numeroChar);

printf("\n\n 0 para continuar otro para salir....:");
scanf("%d" , &ok);
while((ch = getchar()) != '\n');

}while(ok==0);

return 0;
}

void limpiar(char numeroChar[], int longitud){
int i=3;
while(++i < longitud){
if(i==4){
numeroChar[4] = '\0';
}
if(i>4){
numeroChar[i] = ' ';
}
}
}


    Desde ya muchas gracias.-
    Saludos.
#358
Hola vangodp.
Por el momento solo me limito a leer y no tengo argumentos para disentir en ciertas cosas por el poco tiempo que tengo estudiando C.-
Sólo voy a hacer unas pequeñas observaciones:
En primer lugar tengo leído que la única función que debo utilizar para leer cadenas es fgets y más en este caso que necesito un máximo restringido de caracteres ingresados.-
En segundo lugar si ingreso 12345678 el resultado es incorrecto.-



Luego de lo observado el programa funciona muy bien.-
De cualquier manera en este instante encontré la solución.-   

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

int main(void){
unsigned int ok=0, ch=0, c=0, longitud=0;
char numeroChar[7] = "";

do{
system("cls");
printf("\n\n Ingrese un entero....:");
fgets(numeroChar, 5, stdin);
longitud = strlen(numeroChar);

do{
if(ch == 0) break;
}while((ch = getchar()) != '\n');

numeroChar[longitud-1] = '\0';
printf("\n\n Ingresaste..: %s   -----> longitud = %d", numeroChar, longitud);
printf("\n\n 0 para continuar otro para salir....:");
scanf("%d" , &ok);
while((c = getchar()) != '\n');


}while(ok==0);

return 0;
}
        

   Saludos.
#359
Hola.
Cuando ingreso más de 3 cifras todo funciona a la perfección, pero si ingreso menos de 4 el programa se queda detenido en el bucle while de limpieza de buffer de teclado, es como cuando tiene algo para leer (más de 3 cifras) todo funciona Ok .-

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

int main(void){
unsigned int ok=0, ch=0, longitud=0;
char numeroChar[7] = "";

do{
system("cls");
printf("\n\n Ingrese un entero....:");
fgets(numeroChar, 5, stdin);
longitud = strlen(numeroChar);
while((ch = getchar()) != '\n');
numeroChar[longitud-1] = '\0';
printf("\n\n Ingresaste..: %s   -----> longitud = %d", numeroChar, longitud);
printf("\n\n 0 para continuar otro para salir....:");
scanf("%d" , &ok);
while((ch = getchar()) != '\n');
}while(ok==0);

return 0;
}
   

Bueno espero que me ayuden porque hace 2 días que estoy googleando y practicando y no logro la solución y por favor un poco de teoría del porqué.-       

Saludos.

#360
Hola leo.
Citar.....nos hubiéramos ahorrado trabajo.
Mil disculpas.-

Citarif(longitud-1 == 11 && numeroChar[0] >= 2){
              i=1;
}
Muy bien, muchas gracias grave error el mio y lo estoy revisando porque me parece que hay otro.-

Citar....no inicializas la variable numero a cero
Esta parte no la entiendo, lo voy a analizar, en crudo te diré que el paso de la variable a la función es para pasarla como valor y no como referencia (*ptrNumero
) para no destruir los datos que contiene, decime por favor tu conclusión.-  

Saludos.