Si lees las normas del foro... una de ellas dice: "No se hacen tareas".
Empieza a traducirlo tú y cuando te atasques avísanos.
Empieza a traducirlo tú y cuando te atasques avísanos.
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úCitar
1.-porque se dice que las intrucciones como break (exepto de switch), continue, y goto hacen que un programa en c que debe ser programacion estructurada deje de serlo al usar estas instrucciones.
void main( )
{
int i=0;
func( ); // llamada a funcion
// al salir de "func", el codigo ejecutara esta instruccion
// independientemente del contenido de "func"
i++;
}
int main( )
{
int main( )
{
goto a;
d: putchar( 'a' ); goto e;
a: putchar( 'h' ); goto b;
h: putchar( 'n' ); goto i;
c: putchar( 'l' ); goto d;
e: putchar( ' ' ); goto f;
f: putchar( 'm' ); goto g;
b: putchar( 'o' ); goto c;
i: putchar( 'd' ); goto j;
g: putchar( 'u' ); goto h;
j: putchar( 'o' );
}
int main( )
{
int i=0;
while ( 1 ) // Este bucle no deberia terminar nunca
{
if ( i == 5 )
break;
// mas codigo
i++;
}
printf( "Fin" );
}
int main( )
{
int i=0;
while ( 1 ) // Este bucle no deberia terminar nunca
{
if ( i == 5 )
goto fin;
// mas codigo
i++;
}
fin: printf( "Fin" );
}
int main( )
{
int i=0;
while ( i != 5 )
{
// mas codigo
i++;
}
printf( "Fin" );
}
int main( )
{
int valor = func( );
// switch ( es equivalente a la secuencia de ifs siguiente
switch ( valor )
{
case 0:
printf( "cero\n" );
break;
case 1:
printf( "uno\n" );
break;
case 2:
printf( "dos\n" );
break;
}
if ( valor == 0 )
printf( "cero\n" );
else if ( valor == 1 )
printf( "uno\n" );
else if ( valor == 2 )
printf( "dos\n" );
}
Citar2- En que casos o usos de funciones como las anteriores o librerias al usarlas nuestro programa dejaria de ser estructurado.
Citar3- En este ejemplo que se hace cuando se programa sockets:
Código
server.sin_addr = *((struct in_addr *)he->h_addr);
se utiliza para pasar los valores de he a h_addr pero es estado viendo alguno codigo donde usan puntero o vectores y usan igual esto " -> ", lo que quisiera saber es si es el unico uso que se le da para trasferir datos y en que casos se puede usar y como se usa en realidad no se si me puedan ayudar con un ejemplo.
int main( )
{
char* cad1 = "Mensaje";
char* cad2 = "Otro mensaje";
cad2 = cad1;
printf ("%d %d", cad1, cad2 );
}
typedef struct
{
int numero1;
int numero2;
} objeto;
int main( )
{
objeto obj1, obj2;
obj1.numero1 = 20;
obj1.numero2 = 45;
obj2 = obj1;
printf ( "%d %d", obj2.numero1, obj2.numero2 );
}
Citar4-Tambien queria ver si me podrian decir si en c existe alguna alternativa a try-catch ya que esta solo encuentro informacion para c++ y al compilar me dice que esta indefido try.
void sumar( int a, int b )
{
throw a + b;
}
int main( )
{
try
{
sumar( 4, 6 );
}
catch ( const int& resultado )
{
std::cout << resultado;
}
}
int dividir( int dividendo, int divisor )
{
if ( divisor == 0 )
{
// Tratamiento del error
}
else
return dividendo / divisor;
}
Cita de: #Aitor en 7 Mayo 2014, 14:07 PM
En principio no entiendo esta linea.int max = ( argc > MAXSTRINGS ) ? MAXSTRINGS : argc - 1;
int max;
if ( argc > MAXSTRINGS )
max = MAXSTRINGS;
else
max = argc - 1;
Cita de: #Aitor en 7 Mayo 2014, 14:07 PM
Y luego no termino de entender, por qué el programa no explota si la idea deconst int MAXSTRINGS = 100;
string frase[ MAXSTRINGS ];
Es la misma idea qué:string frase[100];
for(int it = 0; it < max; it++)
void insertarPaisesG(int ID, char Nombre[]){
Paises * nuevo;
nuevo = (Paises *)malloc(sizeof(Paises));
nuevo->IDpais=ID;
strcpy(nuevo->Pais, Nombre);
if(PAIprimero->p!=PAIultimo){
fwrite(recorre, sizeof(Paises), 1, archivo);
typedef struct pais
{
int ID;
char Nombre[20];
int NoParticipantes;
int NoMedallas;
} Pais;
typedef struct nodo
{
Pais pais;
struct nodo* p;
} Nodo;
void insertarPaisesG(int ID, char Nombre[]){
Nodo* nuevo;
// Mejor calloc que malloc... calloc reinicia la memoria
// asi los campos "NoParticipantes" y "NoMedallas" empezaran con valor 0 automaticamente.
nuevo = (Nodo*)calloc(1, sizeof(Nodo));
nuevo->pais.ID=ID;
strcpy(nuevo->pais.Nombre, Nombre);
// ...
}
void guardarPaises(){
printf("\n\n\nGuardando informaci�n de paises");
FILE * archivo = fopen("Paises.dat", "wb");
if(archivo == NULL){
printf("\n\n\nError al guardar en archivo");
return;
}
Nodo* recorre = PAIprimero;
while (recorre != NULL){
fwrite(&(recorre->pais), sizeof(Pais), 1, archivo); // Solo guardamos la "chicha"
recorre = recorre->p;
}
fclose(archivo);
}
void cargarPaises(){
FILE * archivo = fopen("Paises.dat", "rb");
if(archivo == NULL){
printf("\n\n\nError al cargar desde archivo");
return;
}
Pais pais; // No tiene sentido que uses malloc aqui... ademas se te olvido el free correspondiente
int leidos;
do{
leidos = fread(&(pais), sizeof(Pais), 1, archivo);
if (leidos == 1)
insertarPaisesG(pais.ID, pais.Nombre);
} while (leidos == 1);
fclose(archivo);
}
for(int it = 0; it < 100; it++) {
#include <iostream>
#include <string>
using namespace std;
const int MAXSTRINGS = 100;
char transformar_caracter(char letra)
{
if ( letra%2 )
letra--;
else
letra++;
return letra;
}
int main(int argc, char **argv )
{
if(argc < 2)
return 0;
string frase[ MAXSTRINGS ];
int max = ( argc > MAXSTRINGS ) ? MAXSTRINGS : argc - 1;
for(int it = 0; it < max; it++)
{
frase[it] = argv[ it + 1];
int tam = frase[it].size();
for(int i=0; i<tam; i++)
cout << transformar_caracter(frase[it][i]);
cout << "\t"; // Lo he puesto para separar cada palabra
}
cout << endl;
return 0;
}
int x;
int y;
// ...
int main(){
// ...
while(!mala_opcion){
cin >> eleccion;
switch(eleccion){
case 1:
int x;
int y;
cout << "\n\n Introduzca el valor 'x': " << endl;
cin >> x;
cout << "\n\n Introduzca el valor 'y': " << endl;
cin >> y;
sumar(x, y);
// ...
void sumar(int, int){
cout << "\n\nResultado de la Suma: " << x + y << endl;
}
double dividir(int, int){
cout << "\n\nResultado de la Division: " << x / y << endl;
}
#include <iostream>
using namespace std;
void sumar(int, int);
void restar(int, int);
void multiplicar(int, int);
void dividir(int, int);
int main()
{
cout << "------C A L C U L A D O R A------" << endl;
cout << "Escoja escribiendo el numero, el tipo de calculo que desea realizar:" << endl;
cout << " 1) Sumar 2) Restar" << endl << " 3) Multiplicar 4) Dividir" << endl;
bool repetir = false; // esta se corresponde con mala_opcion, el nombre y su uso no son para nada claros
do // no tiene sentido comprobar "repetir" en la primera iteracion
{
int eleccion;
cin >> eleccion;
switch(eleccion)
{
case 1:
int x, y;
cout << endl << "Introduzca el valor 'x': " << endl;
cin >> x;
cout << "Introduzca el valor 'y': " << endl;
cin >> y;
sumar(x, y);
break;
case 2:
int x, y;
cout << endl << "Introduzca el valor 'x': " << endl;
cin >> x;
cout << "Introduzca el valor 'y': " << endl;
cin >> y;
restar(x, y);
break;
case 3:
int x, y;
cout << endl << "Introduzca el valor 'x': " << endl;
cin >> x;
cout << "Introduzca el valor 'y': " << endl;
cin >> y;
multiplicar(x, y);
break;
case 4:
int x, y;
cout << endl << "Introduzca el valor 'x': " << endl;
cin >> x;
cout << "Introduzca el valor 'y': " << endl;
cin >> y;
dividir(x, y);
break;
default:
cout << endl << "Has introducido un comando incorrecto, vuelva a repetir." << endl;
repetir = true;
break;
}
}
cin.get();
return 0;
}
void sumar(int x, int y)
{
cout << endl << "Resultado de la Suma: " << x + y << endl;
}
void restar(int x , int y){
cout << endl << "Resultado de la Resta: " << x - y << endl;
}
void multiplicar(int x, int y){
cout << endl << "Resultado de la Multiplicacion: " << x * y << endl;
}
void dividir(int x, int y){
// Hay dos formas de hacer cast... estilo C y estilo C++:
double dividendo, divisor;
// Estilo C
// Es mas inseguro y es mejor evitarlo... pero al principio es mas sencillo de usar
dividendo = (double)x;
divisor = (double)y;
// Estilo C++
// La opcion recomendada, aunque conviene revisar los diferentes tipos de casting que hay
dividendo = static_cast< double >( x );
divisor = static_cast< double >( y );
cout << endl << "Resultado de la Division: " << dividendo / divisor << endl;
}
int ntriangulos;
// ...
ntriangulos=1.0;
m=ntriangulos;
//...
p=ntriangulos;
do{
for(n=ntriangulos-1; n>=0&&ntriangulos<NTRIANGULOS; n--)
{
// ....
ntriangulos++;
}
} while(ntriangulos<NTRIANGULOS);
ntriangulos=1.0;
do{
for(n=ntriangulos-1; n>=0&&ntriangulos<NTRIANGULOS; n--)