Es un programa que imprime los numeros del 1 al 100, el resultado de la suma de los pares y el resultado de la suma de los impares.(debe de utilizar dos arreglos uno que arroje la serie y otro el resultado de las sumas)
La serie si la imprime bien pero al momento de que mando a imprimir las sumas me arroja valores basura, el código es este:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
void main (void)
{
clrscr();
int arryc[99],arryS[99],spar=0,simp=0;
//sleep()=[500];
cout<<"Serie: "<<endl;
cout<<"\n";
for(int i=0;i<=99;i++)
{
arryc[i]=i+1;
cout<<arryc[i]<<"\t";
}
arryS[99]=0;
for (int i=0; i<=99;i++)
{
if ( arryS[i] % 2 == 0)
{
//arryS[i]=0;
spar=spar+arryS[i];
//spar+=arryS[i];
}
else
{
//arryS[i]=0;
simp=simp+arryS[i];
//simp+=arryS[i];
}
}
cout<<"\nSuma pares: ";
cout<<spar<<endl;
cout<<"\nSuma impares: ";
cout<<simp<<endl;
getch();
}
Inicializas arryc pero no arryS.
Por cierto, para que usas las conio? No son multiplataforma y en vez de getch() puedes usar getchar().
Algo parecido te diría con windows.h
Pues viejo, no veo el porque debes usar otro arreglo para usarlo en la suma de numeros pares e impares. Simplemente reutiliza el mismo arreglo en otro ciclo por separado y lo usas para filtrar y sumas en una variable u otra y ya lo tienes, más que nada, ya que estas usando, debes saber cuales son las librerias que necesitas:
#include <stdio.h> ---> no la necesitas, es la libreria estandar de C para flujo de datos de entrada y salida, usa scanf, printf y similares, funciona en C, no para C++
#include <iostream.h> ---> el unico que necesitas, es para el cin y el cout, osease, el flujo de datos de entrada y salida en C++.
#include <conio.h> ----> no lo necesitas, es para edición de colores, solo funciona en windows
#include <windows.h> ----> no lo necesitas, es para crear y configurar interfaces de ventana o formularios graficos, no es portable para multiplataforma, es decir, funciona solo en windows
#include <stdlib.h> ---> no lo necesitas, es de C
void main (void) ---> main(), bueno, eso depende del compilador, pero generalmente es así
Va tu solución a mi me funciono bien ahora. El problema no era de iniciar las variables, es que simplemente usabas un arreglo que pues, estaba lleno de basura (no inicializado), pero que de todas maneras sobraba, con el primer arreglo es más que suficiente, lo que necesitabas es hacer otro ciclo de lectura de ese arreglo.
#include <iostream>
using namespace std;
main ()
{
int arryc[99],arryS[99],spar=0,simp=0;
//sleep()=[500];
cout<<"Serie: "<<endl;
cout<<"\n";
for(int i=0;i<=99;i++)
{
arryc[i]=i+1;
cout<<arryc[i]<<"\t";
}
for (int i=0; i<=99;i++)
{
if ( arryc[i] % 2 == 0)
{
//arryS[i]=0;
spar=spar+arryc[i];
//spar+=arryS[i];
}
else
{
//arryS[i]=0;
simp=simp+arryc[i];
//simp+=arryS[i];
}
}
cout<<"\nSuma pares: ";
cout<<spar<<endl;
cout<<"\nSuma impares: ";
cout<<simp<<endl;
cin.get();
}
Cita de: dato000 en 5 Marzo 2013, 22:10 PM
Pues viejo, no veo el porque debes usar otro arreglo
....................
Porque además de los números se le pide que guarde en "otro" arreglo las sumas parcialesCitar
(debe de utilizar dos arreglos uno que arroje la serie y otro el resultado de las sumas)
vamos algo como esto:Serie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99 100
1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
3 171 190 210 231 253 276 300 325 351 378 406 435 465 496 528 56
1 595 630 666 703 741 780 820 861 903 946 990 1035 1081 1128 1176 12
25 1275 1326 1378 1431 1485 1540 1596 1653 1711 1770 1830 1891 1953 2016 2080 21
45 2211 2278 2346 2415 2485 2556 2628 2701 2775 2850 2926 3003 3081 3160 3240 33
21 3403 3486 3570 3655 3741 3828 3916 4005 4095 4186 4278 4371 4465 4560 4656 47
53 4851 4950 5051
Suma pares: 5100
Suma impares: 7550
#include <iostream>
using namespace std;
int main (void){
int arryc[100],arryS[100]={0},spar=0,simp=0;
//sleep()=[500];
cout<<"Serie: "<<endl;
cout<<"\n";
arryS[0]=1;
for(int i=0;i<=99;i++){
arryc[i]=i+1;
if (i>0)
arryS[i]+=i+1+arryS[i-1];
cout<<arryc[i]<<"\t";
}
cout<<endl<<endl;
for(int i=0;i<=99;i++)
cout<<arryS[i]<<"\t";
for (int i=0; i<=99;i++) {
if ( arryc[i] % 2 == 0)
spar=spar+arryc[i];
else
simp=simp+arryc[i];
}
cout<<endl<<"\nSuma pares: ";
cout<<spar<<endl;
cout<<endl<<"\nSuma impares: ";
cout<<simp<<endl;
cin.get();
return 0;
}
Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Cita de: leosansan en 5 Marzo 2013, 22:44 PM
Porque además de los números se le pide que guarde en "otro" arreglo las sumas parciales
vamos algo como esto:
ahhh pensaba que era opcional, entendi mal, bueno en fin :¬¬ :¬¬
Cita de: amchacon en 5 Marzo 2013, 21:55 PM
Inicializas arryc pero no arryS.
Por cierto, para que usas las conio? No son multiplataforma y en vez de getch() puedes usar getchar().
Algo parecido te diría con windows.h
Porque la conio es la que me enseñaron (apenas voy comenzando con el c++) la windows es por que le queria poner un sleep a la serie del 1 al 100 pero no supe como y olvide quitarla, gracias.
Cita de: leosansan en 5 Marzo 2013, 22:44 PM
Porque además de los números se le pide que guarde en "otro" arreglo las sumas parciales
vamos algo como esto:
Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
gracias leosansan!! tu código me ayudo mucho pude resolver el problema en el mio ;D (en lo unico que tengo duda fue en esto:
int arryc[99],arryS[99]={0},spar=0,simp=0;
en arryS el cero entre llaves es una forma de declararlo o la sintaxis correcta?)
gracias dato000!! yo pensé lo mismo que tu pero la maestra me pidió 2 arreglos, lo de las librerias: la conio.h stdio.h y iostream.h son las que me enseñaron que hay que poner por default(ahora veo que no gracias! :D ), la de windows es por que le quería poner un sleep y no supe cómo, las otras las ocupe para otro programa y olvide quitarlas :xD
Cita de: acega en 6 Marzo 2013, 00:57 AM
gracias leosansan!! tu código me ayudo mucho pude resolver el problema en el mio ;D (en lo unico que tengo duda fue en esto:
int arryc[99],arryS[99]={0},spar=0,simp=0;
en arryS el cero entre llaves es una forma de declararlo o la sintaxis correcta?)
...............................................
Siempre que una varaible se va a usar de "sumador" combiene inicializar a cero para que no contenga previamente valore impredecibles asignados por el compilador o valores basura. Es lo mismo que haces inicializando spar=0,simp=0.Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/ciao.gif)
Otro detalle que se debe corregir en el programa son los indices utilizados para acceder a los arrays. Al declararse en esta forma:
int arryc[99],arryS[99]={0},spar=0,simp=0;
Se declaran dos arrays con 99 elementos cada uno y cuyos indices validos son 0 .. 98.
Si la intención es declarar dos arrays de 100 elementos cada uno se debe cambiar a:
int arryc[100],arryS[100]={0},spar=0,simp=0;
// ...
for (int i = 0; i < 100; i++){
arryc[i] = i + 1;
// ...
Un saludo