Ejercicios

Iniciado por iAmChapin_, 23 Agosto 2015, 20:10 PM

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

iAmChapin_

Hola! He estado navegando por este foro y pues yo estoy iniciando con lo de la programación en C y pues apenas se del tema. Pasa que me encargaron hacer unos ejercicios de programacion pero no se me ocurre una forma de hacerlos debido a como está descrito, aunque creo que las funciones para estos ejercicios que tengo que usar son for o quizas while por como están descritos, se los menciono a continuación:



Me doy cuenta que son casi los mismos, solo que al parecer tienen otras operaciones y creo que estan algo asi como a la inversa al parecer. Si sirve de algo, los ejercicios tengo que realizarlos en Borland (porque estoy empezando).
Espero puedan darme una mano o una pista de cómo realizarlo, se los agradecería mucho!!

engel lex

el primero sería en pseudo codigo algo como

resultado = 0
mientras(n mayor que 0){
  resultado = resultado mas (1 entre n)
  disminuir n
}


el segundo como dices, es prácticamente idéntico, solo que n no se resta, sino que usas otro numero

si puedes en lo que avances muestra tus progresos a ver que tal vas ;)

Saludos!
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

iAmChapin_

Incluire el codigo que tengo programando, mas o menos le entendí y esto hice con la formación y conocimientos de C++ que poseo, lo hice utilizando Borland
#include<conio.h>
#include <iostream.h>

int N;
float resultado = 0;

void main(){

   cout << "Ingrese un valor para N: ";
   cin >> N;
   cout << endl << endl;

   //proceso
   while (N>0)
   {
    resultado = resultado+(1/N);
      N = N--;
      cout << "Resultado: " << resultado;
   }

   getch();

}


Lo ejecute pero me salieron varios mensajes en pantala de Resultado con el numero cero, como unos 20 Resultados y todos con numero 0, pero al final me tiro un numero 1  :(

engel lex

vamos por partes

1)

esto es un error

N = N--;

N-- va a tomar N y despues de lo que haga le restará 1... allí creas un bug, ya que N es igual a viejo N, a N le restas 1, luego le asignas el viejo N a N... y bueno N termina sin cambiar...

2)
procura no usar conio...
lee esto
https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


3)
Citar#include <iostream.h>

ls librerías standard C++ no llevan .h
es simplemente
Citar#include <iostream>

4)
usas las funciones de iostream fuera de su espacio de trabajo, antes de main debes agregar la linea
using namespace std;

5)
no declares variables globales (fuera del main) sin necesidad

6)
C++ cuando hace operaciones retorna el resultado del mismo tipo de los operadores, es decir 1 es entero, 1/2, es un entero entre un entero, así que el resultado será 0 (no hay redondeo, sino truncamiento), debes hacer (1.0/N), ya que 1.0 es float y el resultado será retornado como tal

7)
"main" siempre debe ser tipo int y debe tener al final siempre un return, normalmente 0

Código (cpp) [Seleccionar]
int main(){
//todo lo que se haga

return 0;
}



es increible que con todo eso te haya compilado... D:
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Mientras

#4
En el caso del denominador verás que si es par se resta la fracción, y si es impar se suma. Entonces puedes usar % para sacar el resto y poder determinar si es par o impar.
Por ejemplo:

si n%2==1 entonces es impar

iAmChapin_

Te comparto el código cambiado con todo lo que me dijiste:

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

int main(){

cout << "Ingrese un valor para N: ";
   cin >> N;
   cout << endl << endl;

   int contador;
   int N;
   float resultado = 0;

   //proceso
   while (N>0)
   {

    resultado = resultado+(1.0/N);
      contador = N--;
      cout << "Resultado: " << resultado;
   }

   getch();
   return 0;

}


A la hora de compilarlo me indica el error Namespace name expected, indicando la linea de error de using namespace std, y pues utilizo el conio porque se supone que esa libreria me enseñaron para utilizar getch(), que es un teclazo para que se termine el programa, podrias enseñarme otra forma de utilizar getch() o una funcion parecida porfavor?

iUDEX

Puedes probar con:

Código (cpp) [Seleccionar]
cin.get();
Namasté, criatura.

iAmChapin_

Ensamblando todas las respuestas, el código me queda así:

#include <iostream>
using namespace std;


int main(){

int N;

cout << "Ingrese un valor para N: ";
        cin >> N;
        cout << endl << endl;

   int contador;
   float resultado = 0;
   //proceso
   while (N>0)
   {
      if (N%1==1)
      {
    resultado = resultado+(1.0/N);
      contador = N--;
      cout << "Resultado: " << resultado;
      }
      else
      {
      resultado = resultado-(1.0/N);
      contador = N--;
      cout << "Resultado: " << resultado;
      }
   }

   cin.get();
   return 0;

}


Y me da con los siguientes errores o avisos:



Lamento que lidien con esto, y la verdad es tengo muchas ganas de entrarle al tema porque me interesa!  :-\

engel lex

que rayos es N%1==1? eso está mal para cualquier caso

N-- no necesita comparación es simplemente N-- y listo...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Mientras

#9
Dice que la condición siempre es falsa " N%1==1 "y tiene razón. Me había equivocado, es N%2==1  

Si quieres hacer N = N - 1  lo otra forma es  N--

Si vas a poner
N--;
cout << "Resultado: " << resultado;

dentro del IF en caso sea cierto y dentro del caso sea falso, lo más adecuado es que lo pongas fuera del IF.