Necesito ayuda con estos 3 en C

oscaratmadrid
Mensajes: 44
Registrado: 04 Oct 2011 15:24

Necesito ayuda con estos 3 en C

Mensaje por oscaratmadrid »

Hola a todos, necesito ayuda con estos 3 ejercicios, me he quedado encallado y no los se acabar.
1º tengo que hacer un programa que entro una secuencia de numeros acabada en cero me aga la suma de multiples de 3

Código: Seleccionar todo

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

int main()
{
    int num,suma=0;

do {
    printf("\n Dime el numero: ");
    scanf("%d", &num);
    if ((num>0)&&(num%3)) suma=suma+num;

}
    while (num!=0);
    printf("\n la suma es= %d",suma);

    return 0;

}
2º que pida tres numeros por teclado y si son iguales diga "no diferentes" y se acabe el programa [eso esta hecho] a partir de aqui ya no me sale: si son direrentes que diga el mas grande.

Código: Seleccionar todo

#include <stdio.h>
#include <math.h>
int main() {
  int a,b,c;
  printf("\n dime el primer numero: ");
  scanf("%d", &a);
  printf("\n dime el segon numero: ");
  scanf("%d", &b);
  printf("\n dime el tercer numero: ");
  scanf("%d", &c);
if ((a!=b) && (a!=c) && (b!=c)) printf("\n ");
 else if ((a=b) && (a=c) && (b=c)) printf("\n No direrentes");


    return 0;
}
y el 3º: que pida dos numeros y comprueve si estan entre el 0 y 10. si no estan que diga "valores fuera de rango". Si estan entre 0 y 10 y el primero es mas grande que el segundo diga"valores incompatibles" y si el segundo es mas grande que el primero muestre por pantalla todos los numeros desde el primero hasta el ultimo ( si ponemos 3 y 6: 3,4,5,6)

Código: Seleccionar todo

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

int main()
{
    int a,b;
    printf("\n dime numero entero: ");
    scanf("%d",&a);
    printf("\n dime un numero entero: ");
    scanf("%d",&b);

if ((a<=10) && (a>=0)&& (b<=10) && (b>=0)) printf("\n el numero esta entre 0 y 10",a);
     else if ((a>10) && (b>10)) printf("\n Valor fuera de rango");



    return 0;
}

MUCHISIMAS GRACIAS!!!!
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: Necesito ayuda con estos 3 en C

Mensaje por Irenicus »

Me refiero sólo al primero:

Utilizas un do - while y quizás te complica las cosas. Intenta hacer las cosas paso a paso:
  • 1. Declaraciones de variables: suma y número
  • 2. Mientras llegue un número y sea distinto de 0
  • 2.1 Si es múltiple de 3, suma = suma + número
  • Nota: Verifica si num%3 devuelve 1 si el número es múltiple de 3 o si no lo es. Creo que te has liado con el concepto.
  • 3. Escribir suma por la pantalla
---

Me refiero al segundo:
Editado, JM casi te ha dado la solución en el siguiente mensaje.

---

Me refiero al tercero:

Una vez después de haber hecho el primer if, sabes que los valores están entre 0 y 10, entonces sólo te queda mirar si a es mayor que b.
Si es mayor, escribes "Valores incompatibles".
Si no, escribes todos los valores (por ejemplo, con un for de a hasta b, incrementando en uno a en cada vuelta).
Última edición por Irenicus el 06 Nov 2011 20:50, editado 2 veces en total.
JM~
Mensajes: 234
Registrado: 25 Oct 2007 11:19
Contactar:

Re: Necesito ayuda con estos 3 en C

Mensaje por JM~ »

El segundo.

Código: Seleccionar todo

if((a>b)&&(a>c))
	printf("EL MAXIMO ES %d\n",a);
else
	if((b>a)&&(b>c))
              printf("EL MAXIMO ES %d\n",b);
        else
              printf("EL MAXIMO ES %d\n",c);
El 3 te lo dejo a ti.

Edito: En el primero para saber si es multiplo de 3 es asi:

Código: Seleccionar todo

 if((num%3)=0)
Irenicus num%3 devuelve el resto de num/3, no? deberia ser 0 para que sea multiplo de 3.
[equipo]PC1|Intel Core 2 Quad 9550 3,4Ghz|ASUS P5Q PRO|4 Gb G.Skill Extreme PC2-8800 1100Mhz|Gainward HD 4870 Golden Sample 1GB GDDR5|500Gb Seagate Barracuda|Asus DRW-24B3ST|Asus Triton 81|NOX Pulsar 750W|NOX Moonlight SE||XP, W7, OpenSuse 12.1|Samsung P2370HD|||2 x 500Gb Seagate Barracuda. 1TB WD Caviar Black. 2TB WD Caviar Green|[/equipo]
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: Necesito ayuda con estos 3 en C

Mensaje por Irenicus »

@JM sí, pero no lo ponía directamente para que oscaratmadrid lo probara por sí mismo.
JM~
Mensajes: 234
Registrado: 25 Oct 2007 11:19
Contactar:

Re: Necesito ayuda con estos 3 en C

Mensaje por JM~ »

La verdad que dandole la solución a los problemas no es la mejor manera de aprender. Primero tiene que buscar la solución razonada como tu le pusiste mas arriba y luego convertir ese razonamiento en código.
[equipo]PC1|Intel Core 2 Quad 9550 3,4Ghz|ASUS P5Q PRO|4 Gb G.Skill Extreme PC2-8800 1100Mhz|Gainward HD 4870 Golden Sample 1GB GDDR5|500Gb Seagate Barracuda|Asus DRW-24B3ST|Asus Triton 81|NOX Pulsar 750W|NOX Moonlight SE||XP, W7, OpenSuse 12.1|Samsung P2370HD|||2 x 500Gb Seagate Barracuda. 1TB WD Caviar Black. 2TB WD Caviar Green|[/equipo]
oscaratmadrid
Mensajes: 44
Registrado: 04 Oct 2011 15:24

Re: Necesito ayuda con estos 3 en C

Mensaje por oscaratmadrid »

muchas gracias por la ayuda pero no me acaban de ir bien, no se si no os he entendido o esque soy un poco cazurro :D
El primero me da un error: 11|error: lvalue required as left operand of assignment| he quitado el do...while y lo he hecho con if.

Código: Seleccionar todo

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

int main()
{
    int num,suma=0;

    printf("\n Dime el numero: ");
    scanf("%d", &num);
   if(num!=0);
    if else ((num%3)=0) suma=suma+num;
    printf("\n la suma es= %d",suma);


        return 0;

}
El segundo: esta casi acabado pero si pongo los tres numeros iguales tambien me dice cual es mas grande, si pongo 3 numeros diferentes me dice "no diferentes" y cual es mas grande.

Código: Seleccionar todo

#include <stdio.h>
#include <math.h>
int main() {
  int a,b,c;
  printf("\n dime el primer numero: ");
  scanf("%d", &a);
  printf("\n dime el segundo numero: ");
  scanf("%d", &b);
  printf("\n dime el tercer numero: ");
  scanf("%d", &c);

    if((a>b)&&(a>c))
        printf("\n Es mas grande %d",a);
        else
            if((b>a)&&(b>c))
              printf("\n Es mas grande %d",b);
        else
              printf("\n Es mas grande %d",c);

 if ((a=b) && (a=c) && (b=c)) printf("\n No direrentes");


    return 0;
}
y el tercero: no me dice "valor fuera de rango"

Código: Seleccionar todo

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

int main()
{
    int a,b,i;
    printf("\n dime numero entero: ");
    scanf("%d",&a);
    printf("\n dime un numero entero: ");
    scanf("%d",&b);

if ((a<=10) && (a>=0)&& (b<=10) && (b>=0)) printf(" el numero esta entre 0 y 10\n",a);
     else if ((a>10) && (b>10)) printf("\n Valor fuera de rango");
    if (a>b)   printf("\n Valores incompatibles");

for(i=a;i<=b;i++) printf(" %d,",i);

    return 0;
}
Muchisimas gracias :D :mrgreen: espero no haveros molestado mucho, pero acabo de empezar a programar y me pierdo un poco.
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: Necesito ayuda con estos 3 en C

Mensaje por Irenicus »

En el primero necesitas un while (o un for) para hacer tu cometido. Es decir, si vas recibiendo datos por la entrada estándar, deberás hacer algo como:

Código: Seleccionar todo

suma = 0;
dato = leer_dato();
mientras (dato != 0) {
    si (multiple_de_tres(dato)) suma = suma + dato;
    dato = leer_dato();
}
Tu primera versión estaba casi bien, sólo debías comprobar qué devuelve num%3.

--

El problema del segundo son los if anidados, cuando abras un if, usa corchetes ({ }) para asegurarte que van exactamente de donde quieras hasta donde quieras.

--

No entiendo muy bien qué problema tienes con el tercero, pero te aconsejería que hicieras los if más anidados. Y para no darte el código directamente, te lo escribo también en pseudocódigo que deberás interpretar:

Código: Seleccionar todo

a = leer_dato();
b = leer_dato();
c = leer_dato();

si ( fuera_de_rango(a) ) escribir("Valor fuera de rango\n");
si no, si ( fuera_de_rango(b) ) escribir ("Valor fuera de rango\n");
si no {
    si (a > b) escribir ("Valores incompatibles\n");
    si no {
        mientras (a <= b) {
            escribir (a);
            a = a + 1;
        }
    }
}
oscaratmadrid
Mensajes: 44
Registrado: 04 Oct 2011 15:24

Re: Necesito ayuda con estos 3 en C

Mensaje por oscaratmadrid »

lo siento Irenicus pero el pseucodigo no lo he estudiado...
oscaratmadrid
Mensajes: 44
Registrado: 04 Oct 2011 15:24

Re: Necesito ayuda con estos 3 en C

Mensaje por oscaratmadrid »

el primero ya esta :)

Código: Seleccionar todo

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

int main()
{
    int num,suma=0;

    printf("\n Dime el numero: ");
    scanf("%d", &num);
    while(num!=0){
        if(num%3==0){
            suma=suma+num;
          }
        printf("\n Dime el numero: ");
        scanf("%d", &num);
        }
    printf("\n La suma del multiples de 3 es : %d", suma);
    return 0;
    }
oscaratmadrid
Mensajes: 44
Registrado: 04 Oct 2011 15:24

Re: Necesito ayuda con estos 3 en C

Mensaje por oscaratmadrid »

el dos tambien lo he arreglado, pero ayudarme con el tercero porfavor, merci.

Código: Seleccionar todo

#include <stdio.h>
#include <math.h>
int main() {
  int a,b,c;
  printf("\n dime el primer numero: ");
  scanf("%d", &a);
  printf("\n dime el segundo numero: ");
  scanf("%d", &b);
  printf("\n dime el tercer numero: ");
  scanf("%d", &c);

  if ((a==c) && (c==b)){
        printf("\n No direrentes");

  }else if((a>b)&&(a>c)){
        printf("\n El mas grande es el primero, %d",a);
      }
      else if((b>a)&&(b>c)){
              printf("\n El mas grande es el segundo,%d",b);
      }else{
              printf("\n El mas grande es el tercero, %d",c);
            }

    return 0;
}

Responder