Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Algoritmo

Estas en el tema de Algoritmo en el foro de C/C++ en Foros del Web. Tengo la tarea de crear el argoritmo para las siguientes situaciones: a) Averiguar si el valor de una variable (dada por el usuario) es par ...
  #1 (permalink)  
Antiguo 05/09/2006, 11:58
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Algoritmo

Tengo la tarea de crear el argoritmo para las siguientes situaciones:

a) Averiguar si el valor de una variable (dada por el usuario) es par

b) Averiguar si es un numero primo

c) Representar una multiplicacion con una suma ej. A*B donde B=3 // a+a+a.

Necesito los codigos de lenguaje C++ para estos ejemplos para poder crear los algoritmos.

Me parece k para el ejemplo a) lo k tengo k hacer es un if (a/2 %0), pero me da un error de compilacion k creo esta relacionado con la libreria. Agradeceria cualkier ayuda lo mas pronto posible por favor.
  #2 (permalink)  
Antiguo 05/09/2006, 17:17
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Solo una cosa:

if ((a%2) == 0) entonces es par

Ahorita vine de rapido, si alrato regreso y no te han contestado, te ayudo con los demas...

Saludos!

Última edición por scrolling; 05/09/2006 a las 18:13
  #3 (permalink)  
Antiguo 05/09/2006, 17:49
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Gracias, estare esperando las demas respuestas. Una sola pregunta, solo para estar seguro, la funcion if ((a%2) ==0), dice k "si el RESIDUO de la division de number entre 2 es 0 entonces...."???
  #4 (permalink)  
Antiguo 05/09/2006, 18:51
 
Fecha de Ingreso: septiembre-2004
Mensajes: 252
Antigüedad: 19 años, 7 meses
Puntos: 0
Cita:
Iniciado por pedro_cesar Ver Mensaje
Gracias, estare esperando las demas respuestas. Una sola pregunta, solo para estar seguro, la funcion if ((a%2) ==0), dice k "si el RESIDUO de la division de number entre 2 es 0 entonces...."???
entonces a es par
if ((a%2) ==0)
{
//a fue par

}
else
{
//a no fue par
}
  #5 (permalink)  
Antiguo 05/09/2006, 20:12
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
El tercero podria ser algo asi: (obviamente mas o menos, modificalo para que quede mejorsito :D)

Código:
#include <stdio.h>

int main (int argc, char *argv[]) {
int result = 0, a, b, i;

scanf("%d", &a);
scanf("%d", &b);
for (i = 1; i <= b; i++) {
       result += a;
}
printf("Resultado: %d", result);
}
Alratin te paso el otro, si es que no lo haz sacado tu... Solo recuerda: Aprende a programar!! no siempre te haremos los programas xD

Saludos!

Última edición por scrolling; 05/09/2006 a las 20:19
  #6 (permalink)  
Antiguo 05/09/2006, 23:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
yo soy un novato en esto, mi profesor no ha explicado ese tema y la verdad es k la uni es agoviante. No entiendo lo k esta ahi arriba alguien me lo puede explicar??????

Última edición por pedro_cesar; 05/09/2006 a las 23:58
  #7 (permalink)  
Antiguo 05/09/2006, 23:55
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Para la parte b) ya halle la solucion, me tomo un par de horas y mucha lectura, aun tiene un pekeño defecto para el No. 2. pero esta listo aki y les doy el codigo por si a alguien le interesa:

# include <iostream>

using namespace std;

int main (void) {

int a;
int b;
b=2;
start:;
cout<<"Da un numero: ";
cin>>a;

if (a==2) {
cout<<"El numero 2 es primo\n";

} else if ((a%b) ==0) {
cout<<"El numero "<<a<<" no es primo\n";
system("pause");
goto start;

}

do {
b++;
a/b;

} while (b<a);
cout<<"El numero "<<a<<" es primo\n";
system ("pause");
goto start;
}

Última edición por pedro_cesar; 06/09/2006 a las 00:00
  #8 (permalink)  
Antiguo 06/09/2006, 05:28
 
Fecha de Ingreso: septiembre-2004
Mensajes: 252
Antigüedad: 19 años, 7 meses
Puntos: 0
Código:
#include <iostream>
using namespace std;

int primo(int x);
int main (int argc, char *argv[])
{
	int numero;
	cout<<"Ingrese un numero: "<<endl;
	cin>>numero;
	if(numero==2 || numero == 1) 
		cout<<"Su numero es primo"<<endl;
		else
		{
			if(primo(numero)==0)
			{
				cout<<"Su numero es primo"<<endl;
			}
			else
			{
				cout<<"Su numero no es primo"<<endl;
			}
		}
	return 0;
}
	
	//devuelve 0 si el parametro que le pasamos fue primo  y 1 si no lo es
int primo(int x)
{
	int i;
	
	for ( i = x-1; i > 1 ; i--)
	{
				if(x%i==0) return 1;
	}
	
	return 0;
}
  #9 (permalink)  
Antiguo 06/09/2006, 10:12
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Código:
#include <stdio.h>

int main (int argc, char *argv[]) {
int result = 0, a, b, i;  //Se declaran las variables "a", "b" e "i" y se define "result" con un valor 0

scanf("%d", &a); // Se introduce el numero que se sumará
scanf("%d", &b); /* Se introduce el numero que va a ser el numero de veces que se sumará el primer numero*/

for (i = 1; i <= b; i++) { 
/* El ciclo se repetira mientras que "i", que se inicia en 1 ( i = 1), sea menor o igual al valor de "b" ( i<= b). En cada repeticion del ciclo se le suma 1 a i (i++)*/

       result = result + a; // Se suma "result + a" y ese valor se le asigna a result
}
printf("Resultado: %d", result); //Se muestra el resultado
}
Lo unico que hace es pedir dos numeros (con scanf) esos dos numeros son los que se van a "multiplicar".

Despues, una multiplicacion es sumar "n" veces un numero, en este caso se sumara "b" veces el numero "a", por eso se inicia un ciclo, el ciclo se repite mientras que "i" sea menor o igual a "b", o sea, se repetira "b" veces, dentro de estas repeticiones lo que se hara es sumar "result" + "a".

"result += a" es lo mismo que "result = result + a", entonces, supongamos que introduces los numeros 3 y 2, lo que hará va ser:

inicia el ciclo por primera vez, result vale 0, entonces result = result + a, entonces result = 3. (recuerda que result vale 0 incialmente, entonces 0+3 = 3.

La segunda vez que se repite el ciclo result vale 3 (por el resultado de la primera vez), entonces "result = result + a" result vale 6 porque result (que vale 3) + 3 = 6

Como el ciclo solo se repite solo 2 veces (que es el segundo numero introducido) el resultado es 6, que es igual a 3*2 (que son los numeros que metimos).

Talvez no me entendiste xD unicmante tienes que leer algo sobre el ciclo "for". Y recordar que en la asignacion (o sea, cuando haces "tal = otracosa", lo primero que se evalua es lo de la derecha. En ese caso "result = result + 3", lo primero que se evalua es lo de la derecha, y ya cuando se tenga el resultado, entonces es asignado a la variable de la izquierda.

P.D.: En este foro ya me habia caracterisado por confundir mas a los usuarios xD Asi que si te confundi mas, perdon...

Saludos!

Última edición por scrolling; 06/09/2006 a las 10:19
  #10 (permalink)  
Antiguo 06/09/2006, 15:00
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
no pudiste haber sido mas explicito, todo me kedo muy claro, y aprendi la parte de "for" k nunca la habia visto, la buske y mas o menos me la aprendi. Gracias. aki te pongo el codigo k compile:

#include <iostream>

using namespace std;

int main () {

int a;
int b;
int c;
int d = 0;

cout<<"Da el 1er numero: ";
cin>>a;

cout<<"Da el 2do numero: ";
cin>>b;

for ( c=1; c<=b; c++){
d = d + a;
}
cout<<"El resultado es: "<<d<<"\n";
system("pause");
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:25.