Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: carloscb12 en 16 Marzo 2011, 15:56 PM

Título: Ayuda
Publicado por: carloscb12 en 16 Marzo 2011, 15:56 PM
Como consigo después de almacenar una cadena de números que me identifique cuantos nueves tengo en esa cadena por ejemplo?
#include <stdio.h>

int main()
{
int cadena[10];
int i;
int nueves = 0;
printf("Escriba una serie de números (máximo 10): \n");
for (i=0;i<=10;i++) {

  scanf ("%d", &cadena [10]);

if (cadena == 9) {
 nueves + 1= nueves;
printf("En la serie hay %d nueves", nueves);
}
else {

printf("No hay nueves en la serie de números");

}

return 0;
}


Que tengo mal?
Título: Re: Ayuda
Publicado por: anonimo12121 en 16 Marzo 2011, 16:15 PM
con un tondador que compare caracteres. y se incremente cada vez que sea igua
x=9;
i=0;
if(x==9)i++;
Título: Re: Ayuda
Publicado por: carloscb12 en 16 Marzo 2011, 16:31 PM
Cita de: Xafi en 16 Marzo 2011, 16:15 PM
con un tondador que compare caracteres. y se incremente cada vez que sea igua
x=9;
i=0;
if(x==9)i++;

como hago el contador que compare caracteres?
Título: Re: Ayuda
Publicado por: anonimo12121 en 16 Marzo 2011, 16:38 PM
Cita de: carloscb12 en 16 Marzo 2011, 16:31 PM
como hago el contador que compare caracteres?
el contador es "i" por cada 9  que haya se incrementa en 1.
Título: Re: Ayuda
Publicado por: Don Pollo en 16 Marzo 2011, 16:41 PM
Debes hacer un bucle que recorra todas las posiciones del array y tienes que tener una variable contador que vaya contando (valga la redundancia) el número de nueves que tienes. Podría ser algo así:

int nueves=0; //Este será el contador. Lo inicializamos a 0.

for(i=0; i<10; i++){
  if(cadena[i] == 9){
     nueves++;
  }
}


Con el bucle "for" recorremos toda la estructura y con el condicional "if" preguntamos si el valor contenido en esa posición es igual que 9, si lo es, se incrementa el contador.
Título: Re: Ayuda
Publicado por: anonimo12121 en 16 Marzo 2011, 16:43 PM
Cita de: Don Pollo en 16 Marzo 2011, 16:41 PM
Debes hacer un bucle que recorra todas las posiciones del array y tienes que tener una variable contador que vaya contando (valga la redundancia) el número de nueves que tienes. Podría ser algo así:

int nueves=0; //Este será el contador. Lo inicializamos a 0.

for(i=0; i<10; i++){
   if(cadena[i] == 9){
      nueves++;
   }
}


Con el bucle "for" recorremos toda la estructura y con el condicional "if" preguntamos si el valor contenido en esa posición es igual que 9, si lo es, se incrementa el contador.
Pollo no des el trabajo echo que si no , no aprenden xD.
Título: Re: Ayuda
Publicado por: Don Pollo en 16 Marzo 2011, 16:46 PM
Cita de: Xafi en 16 Marzo 2011, 16:43 PM
Pollo no des el trabajo echo que si no , no aprenden xD.

Mira que he pensado en no escribir el código, pero no sé, me he sentido generoso  :xD
Título: Re: Ayuda
Publicado por: carloscb12 en 16 Marzo 2011, 17:10 PM
Buaa.. pero este lo necesitaba me llevo rayando la ostia.. y aun asi no me sale!
#include <stdio.h>

int main()
{
int cadena[10];
int i;
int nueves=0;
printf("Escriba una serie de números (máximo 10): \n");
scanf ("%d", &cadena [10]);
for(i=0; i<10;i++) {
   if(cadena == 9){
     nueves++;
}

}
printf("Hay %d nueves\n", nueves);


return 0;
}
En que fallo? y decirmelo que necesito este ejercicio para mañana, despues me haceis pensar todo lo que querais jajaj :)
y gracias por la ayuda.
Título: Re: Ayuda
Publicado por: anonimo12121 en 16 Marzo 2011, 17:18 PM
if(cadena == 9){
     nueves++;
}

donde estan los corchetes de cadena y el numero que le corresponde??

cadena
Título: Re: Ayuda
Publicado por: carloscb12 en 16 Marzo 2011, 17:25 PM
no me los copió pero si que los tenía, cadena .. y me compila pero me pone el mismo numero que tecleeo como el numero de nueves que hay. No lo entiendo..
Título: Re: Ayuda
Publicado por: carloscb12 en 16 Marzo 2011, 17:26 PM
Cita de: carloscb12 en 16 Marzo 2011, 17:25 PM
no me los copió pero si que los tenía, cadena .. y me compila pero me pone el mismo numero que tecleeo como el numero de nueves que hay. No lo entiendo..

Ves y sigue si dejarme jajaj cadena [ i ] ( a ver asi )
Título: Re: Ayuda
Publicado por: Don Pollo en 16 Marzo 2011, 17:35 PM
El programa te falla en que sólo introduces un número en la posición cadena[10], que además está fuera del rango de tu vector ya que las posiciones van de 0 a 9. Debes hacer un bucle que las recorra todas y por cada una introducir el valor deseado.
Título: Re: Ayuda
Publicado por: anonimo12121 en 16 Marzo 2011, 17:48 PM
Aquí un ejemplo mío que no es igual a lo tuyo. analízalo...
Mis codigos son en c++ no me manejo bien con los printf y esas cosas XD. pero bueno lo del cout y cin imaginate que es printf scanf... son solo funciones de entrada y salida.
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
int cadena[]={1,9,3,9,5,9,7,8,9,9};
int contador=0;
for(int i = 0; i<10;i++){
if(cadena[i]==9)contador++;
}
cout << "en la cadena estan los numeros: " ;
for(int i=0;i<10;i++)cout << cadena[i] << ", ";
cout << endl;
cout << "De los cuales " << contador << " son nueves." << endl;
cin.get();
return 0;
}


Y algo similar a lo que quieres es.
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
int cadena[10];
int contador=0;
cout << "Escriba 10 numeros: "<< endl;
for(int i = 0; i<10;i++){
       cout << "\nSiguiente : " ;
cin >> cadena[i];
}
for(int i = 0; i<10;i++){
if(cadena[i]==9)contador++;
}
cout << "en la cadena estan los numeros: " ;
for(int i=0;i<10;i++)cout << cadena[i] << ", ";
cout << endl;
cout << "De los cuales " << contador << " son nueves." << endl;
cin.get();
cin.get();
return 0;
}


Me sirvió para practicar
EDITADO.
Título: Re: Ayuda
Publicado por: Don Pollo en 16 Marzo 2011, 17:55 PM
Cita de: Xafi en 16 Marzo 2011, 17:48 PM
Aquí un ejemplo mío que no es igual a lo tuyo. analízalo...

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
int cadena[]={1,9,3,9,5,9,7,8,9,9};
int contador=0;
for(int i = 0; i<10;i++){
if(cadena[i]==9)contador++;
}
cout << "en la cadena estan los numeros: " ;
for(int i=0;i<10;i++)cout << cadena[i] << ", ";
cout << endl;
cout << "De los cuales " << contador << " son nueves." << endl;
cin.get();
return 0;
}


No líes al muchacho, que lo que él está escribiendo está en C. A ver si va a terminar mezclando las dos sintaxis  :xD
Título: Re: Ayuda
Publicado por: anonimo12121 en 16 Marzo 2011, 18:17 PM
Te dejastes ++ xDDD. lo siento XDD
Título: Re: Ayuda
Publicado por: carloscb12 en 16 Marzo 2011, 21:14 PM
Mi ma.. jajaja! a ver si doy sacado algo.