Ir al contenido

publicidad

Foto

mis dudas en c++


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
100 respuestas en este tema

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#16

Escrito 09 diciembre 2008 - 23:59

por cierto como pongo ' con el teclado??? XD

pd. es normal que no me entere de nada??estoy copiando un ejemplo que te viene de cadenas que te cuenta mayúsculas, minúsculas, puntos espacios etc y no me empano xd xd pensaba que igual a si copiandolo en vez de mirarlo por encima me enteraría mejor, pero nada XD se que es cada cosa pero no puedo hacerlo sin mirar, aunque vamos solo llevo 4 dias con esto
pd2. gracias a todos de veras ^^ esto de hacerlo solo es una mierda que pena no tener profesor de esto

-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!`pag 6 actualizacion]

#17

Escrito 10 diciembre 2008 - 00:13

Las cadenas son arrays de carácteres, te guardan grupos de carácteres, letras, llamale como quieras. Es útil cuando quieras alguna variable que te guarde un texto.

PD: Lo tuyo, pese a estar bien, desperdicia memoria, lo mejor seria:

char Saludo[3]= "HOLA"


uhm? No, al contrario, lo tuyo daría error porque estás ocupando más espacio de memoria del reservado.

La cadena "HOLA", que en realidad es "HOLA\0", siendo \0 el carácter nulo, necesita 5 posiciones de array, no 3.

Edito: la verdad es que ahora mismo no sé si el carácter nulo cuenta estrictamente en la definición de cadenas...


es verdad, no tuve en cuenta el carácter fin de palabra, aunque en Java estaria bien

#18

Escrito 10 diciembre 2008 - 00:27

En java tampoco (suponiendo que queramos declarar por alguna razón un array de caracteres), porque aunque cuente el cero como índice, a la hora de hacer una declaración debe indicarse la longitud completa (en este caso, 4).

Al poner char[3], estás declarando un array de longitud 3, con índices de acceso 0, 1 y 2, luego terminarías teniendo un ArrayIndexOutOfBoundsException.

por cierto como pongo ' con el teclado??? XD


A qué te refieres? A ponerlo dentro de una cadena? Necesitas poner antes el carácter de escape: barra invertida o \. Esto aplica también para otros caracteres como el de nueva línea \n tabulación \t retorno de carro \r comillas dobles \" etc.

Ej.:

[code:1]
char c[15] = "comillas: \'\"";
if c[3] == '\''
printf("babab");
[/code]

pd. es normal que no me entere de nada??estoy copiando un ejemplo que te viene de cadenas que te cuenta mayúsculas, minúsculas, puntos espacios etc y no me empano xd xd pensaba que igual a si copiandolo en vez de mirarlo por encima me enteraría mejor, pero nada XD se que es cada cosa pero no puedo hacerlo sin mirar, aunque vamos solo llevo 4 dias con esto


Lo importante es que lo entiendas, la soltura a la hora de escribir código solo la conseguirás con práctica.

Una buena forma de asegurarte de que lo has entendido es intentar ensayar variaciones del código que tienes inicialmente en el ejemplo.

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#19

Escrito 10 diciembre 2008 - 00:34

no lo que intento hacer es poner la camilla simple que se usa en algunos casos y no se ponerla si no es copiando o pegando

-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!`pag 6 actualizacion]

#20

Escrito 10 diciembre 2008 - 10:43

no lo que intento hacer es poner la camilla simple que se usa en algunos casos y no se ponerla si no es copiando o pegando


Esa comilla es esta '? es la que está en la misma tecla que ?

En C te vas a encontrar comillas simples ' y comillas dobles ", las comillas simples es un carácter, ejemplo 'A', y las comillas dobles es una cadena, ejemplo "ABC", puedes encontrar "A", la diferencia estriba que "A" realmente contiene "A\0" y son dos caracteres.

  • vValkir

  • Tingle

  • vida restante: 100%
  • Registrado: 15 dic 2006
  • Mensajes: 3.009
#21

Escrito 10 diciembre 2008 - 14:37

Las comillas simples delante y detrás de un carácter lo que hacen es devolver el valor entero del carácter según la tabla "ASCII", aunque no sé si esto te va a liar más o que...

A la práctica, una variable tipo "char" no es más que un entero representado en forma de carácter. Mediante las comillas simples podemos obtener su correspondiente valor entero.

Espero no haber errado y haberme explicado bien.

Saludos. ;)

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#22

Escrito 10 diciembre 2008 - 16:20

Las comillas simples delante y detrás de un carácter lo que hacen es devolver el valor entero del carácter según la tabla "ASCII", aunque no sé si esto te va a liar más o que...

A la práctica, una variable tipo "char" no es más que un entero representado en forma de carácter. Mediante las comillas simples podemos obtener su correspondiente valor entero.

Espero no haber errado y haberme explicado bien.

Saludos. ;)


a ver si lo entiendo con comillas simples es decir por ejemplo 'A' no da el valor de carácter A si no que da su valor en ASCII que es 65 no????

#23

Escrito 10 diciembre 2008 - 18:58

a ver si lo entiendo con comillas simples es decir por ejemplo 'A' no da el valor de carácter A si no que da su valor en ASCII que es 65 no????

Hola.

No, no. Lo que te está queriendo decir vValkir es que, para cualquier carácter que pongas entre comillas simples, lo que se almacena en memoria no es el carácter en sí (A en este caso), sino su código ASCII correspondiente (65).

El ejemplo está en C, pero sirve para que lo entiendas mejor:
[code:1]#include
using namespace std;
int main(void) {
const char cad = 'A';

printf("cadena: %c\n", cad);
printf("cadena: %d\n", cad);

return 0;
}
[/code]

De todas formas, es mas fácil verlo en la práctica que explicándolo. Cada vez que leas algo de teoría haz un programa y comprueba que has entendido lo que lees. Modifica el programa cien veces si es necesario, lee los errores y los warnings, y prueba cosas nuevas, pero aprender la teoría sin llevarlo a la práctica no te va a servir de mucho.

  • Xinef

  • HARENA TIGRIS

  • vida restante: 100%
  • Registrado: 15 oct 2002
  • Mensajes: 7.003
#24

Escrito 10 diciembre 2008 - 20:48

duda al canto, se trata de cadenas, en realidad pa que sirven? poner para guardar numeros de telefono y eso pero no se xd

ejm:

char Saludo[5] = "HOLA";



La cadena de caracteres es una "especialización" de los arrays, como te han dicho por ahí.

Realmente lo interesante (y lo que tienes que sacar de esto) es el concepto de array.

Un array no es más que un conjunto de "variables" de un mismo tipo colocadas secuencialmente en memoria. Para acceder a cada una de esas "variables" se usa un índice que, en C, empieza por cero.

Puedes tener un array de char, que forman una cadena (más el carácter de fin de cadena '\0'). O un array de int, float o un tipo definido por ti... o incluso de punteros. :-)

Los arrays son una estructura de datos muy usada y es el primer escoyo que tienes que superar para hacer el juego del ahorcado. :-)



PD: en C++ tienes una clase que te abstrae de estar trabajando con arrays de caracteres que, como seguramente habrás visto, no es muy "amigable" si intentas guardar otra cadena en él. Esta clase es string.

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#25

Escrito 11 diciembre 2008 - 00:12

buenas estoy en iniciacionde arrays y los mamomes me ponen problemas que puedo mandarselos pa que me los corrijan xd

son estos:

1. Hacer un programa que lea diez valores enteros en un array desde el teclado y calcule y muestre: la suma, el valor promedio, el mayor y el menor.
2. Hacer un programa que lea diez valores enteros en un array y los muestre en pantalla. Después que los ordene de menor a mayor y los vuelva a mostrar. Y finalmente que los ordene de mayor a menor y los muestre por tercera vez. Para ordenar la lista usar una función que implemente el método de la burbuja y que tenga como parámetro de entrada el tipo de ordenación, de mayor a menor o de menor a mayor. Para el array usar una variable global.
3. Hacer un programa que lea 25 valores enteros en una tabla de 5 por 5, y que después muestre la tabla y las sumas de cada fila y de cada columna. Procura que la salida sea clara, no te limites a los números obtenidos.
4. Hacer un programa que contenga una función con el prototipo bool Incrementa(char numero[10]);. La función debe incrementar el número pasado como parámetro en una cadena de caracteres de 9 dígitos. Si la cadena no contiene un número, debe devolver false, en caso contrario debe devolver true, y la cadena debe contener el número incrementado.
Si el número es "999999999", debe devolver "0". Cadenas con números de menos de 9 dígitos pueden contener ceros iniciales o no, por ejemplo, la función debe ser capaz de incrementar tanto la cadena "3423", como "00002323".
La función "main" llamará a la función Incrementar con diferentes cadenas.
5. Hacer un programa que contenga una función con el prototipo bool Palindromo(char palabra[40]);. La función debe devolver true si la palabra es un palíndromo, y false si no lo es.
Una palabra es un palíndromo si cuando se lee desde el final al principio es igual que leyendo desde el principio, por ejemplo: "Otto", o con varias palabras "Anita lava la tina", "Dábale arroz a la zorra el abad". En estos casos debemos ignorar los acentos y los espacios, pero no es necesario que tu función haga eso, bastará con probar cadenas como "anitalavalatina", o "dabalearrozalazorraelabad".
La función no debe hacer distinciones entre mayúsculas y minúsculas.


-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!`pag 6 actualizacion]

#26

Escrito 11 diciembre 2008 - 00:19

Hola.

Pero, ¿cuál es la duda?.

Pon tus resultados y te daremos nuestra opinión.

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#27

Escrito 11 diciembre 2008 - 00:26

Hola.

Pero, ¿cuál es la duda?.

Pon tus resultados y te daremos nuestra opinión.

la cosa es esa no se ni por donde empezar xd
tardo en pillar las cosas pero cuando las cojo ya no se me olvidan nuna xd
de todas formas ya mañana me pondre a ello

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#28

Escrito 12 diciembre 2008 - 18:51

wenas empece hacer el primer problema y me ecunetro que nos e como hacer para que me diga cual es el mayor numero (se aria con lo de la burbuja??
de momento tengo esto

[code:1]#include
#include

using namespace std;

int main(int argc, char *argv[])
{
float n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12;
cout << "escribe 10 de los cuales quieras sber la suma el promedio el mayor y el menor:\n";
cin.precision(10);//fijamos precision
cin >> n1;
cin >> n2;
cin >> n3;
cin >> n4;
cin >> n5;
cin >> n6;
cin >> n7;
cin >> n8;
cin >> n9;
cin >> n10;



n11 = n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9 + n10;
n12 = n11 / 10;
cout << "la suma de todos sus numeros es\n" << n11 << " \n";
cout << "el promedio de los numeros es\n" << n12 << " \n";

system("PAUSE");
return EXIT_SUCCESS;
}[/code]

-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!`pag 6 actualizacion]

#29

Escrito 12 diciembre 2008 - 19:19

wenas empece hacer el primer problema y me ecunetro que nos e como hacer para que me diga cual es el mayor numero (se aria con lo de la burbuja??
de momento tengo esto

[code:1]#include
#include

using namespace std;

int main(int argc, char *argv[])
{
float n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12;
cout << "escribe 10 de los cuales quieras sber la suma el promedio el mayor y el menor:\n";
cin.precision(10);//fijamos precision
cin >> n1;
cin >> n2;
cin >> n3;
cin >> n4;
cin >> n5;
cin >> n6;
cin >> n7;
cin >> n8;
cin >> n9;
cin >> n10;



n11 = n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9 + n10;
n12 = n11 / 10;
cout << "la suma de todos sus numeros es\n" << n11 << " \n";
cout << "el promedio de los numeros es\n" << n12 << " \n";

system("PAUSE");
return EXIT_SUCCESS;
}[/code]


El ejercicio te dice que debes usar un array, creo que la cosa seria así:

[code:1]#include
#include

using namespace std;

int main(int argc, char *argv[])
{
float j,l,m;
j=l=m=0;
float *array;
array = new float[10];
cout << "escribe 10 de los cuales quieras sber la suma el promedio el mayor y el menor:\n";
for (int i = 0; i<10; i++){
cint >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
}
m = l / 10;
cout << "la suma de todos sus numeros es\n" << l << " \n";
cout << "el promedio de los numeros es\n" << m << " \n";

system("PAUSE");
return EXIT_SUCCESS;
}[/code]

luego para saber lo del mayor número debes ordenarlo, ya sea por burbuja, quicksort, heapsort u otro. El mejor de todos es el quicksort, de todas maneras hay estos algoritmos por la red. Suponiendo que los has ordenado de menor a mayor, lo demás es fácil.

QUICKSORT: http://www.programac...w&t=236&start=0

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#30

Escrito 12 diciembre 2008 - 19:22

wenas empece hacer el primer problema y me ecunetro que nos e como hacer para que me diga cual es el mayor numero (se aria con lo de la burbuja??
de momento tengo esto


El ejercicio te dice que debes usar un array, creo que la cosa seria así:

[code:1]#include
#include

using namespace std;

int main(int argc, char *argv[])
{
float j,l,m;
j=l=m=0;
float *array;
array = new float[10];
cout << "escribe 10 de los cuales quieras sber la suma el promedio el mayor y el menor:\n";
for (int i = 0; i<10; i++){
cint >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
}
m = l / 10;
cout << "la suma de todos sus numeros es\n" << l << " \n";
cout << "el promedio de los numeros es\n" << m << " \n";

system("PAUSE");
return EXIT_SUCCESS;
}[/code]

luego para saber lo del mayor número debes ordenarlo, ya sea por burbuja, quicksort, heapsort u otro. El mejor de todos es el quicksort, de todas maneras hay estos algoritmos por la red. Suponiendo que los has ordenado de menor a mayor, lo demás es fácil.

QUICKSORT: http://www.programac...w&t=236&start=0


lol si te digo que no me entero de nada de eso xd xd a ver si voy practicando
se supone que tengo que hacerlo con lo de la burbuja por que es el unico que debria saber de momento

edito: entiendo todo menos esta parte

[code:1]for (int i = 0; i<10; i++){
int >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
} [/code]

por cierto escribiste cint, sera int no??? ademas al compilar me da un fallo de una ; pero no lo veo. es en la misma linea que el fallo del cint


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad