elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con arreglos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con arreglos.  (Leído 3,514 veces)
acega

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Ayuda con arreglos.
« en: 5 Marzo 2013, 21:47 pm »

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:
Código
  1. #include <stdio.h>
  2. #include <iostream.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <stdlib.h>
  6. void main (void)
  7. {
  8. clrscr();
  9. int arryc[99],arryS[99],spar=0,simp=0;
  10.  //sleep()=[500];
  11.  cout<<"Serie: "<<endl;
  12.  cout<<"\n";
  13.  for(int i=0;i<=99;i++)
  14.  {
  15.   arryc[i]=i+1;
  16.  
  17.   cout<<arryc[i]<<"\t";
  18.  }
  19.  arryS[99]=0;
  20.  for (int i=0; i<=99;i++)
  21.  {
  22.  
  23.   if ( arryS[i] % 2 == 0)
  24.   {
  25.   //arryS[i]=0;
  26.   spar=spar+arryS[i];
  27.   //spar+=arryS[i];
  28.   }
  29.   else
  30.   {
  31.   //arryS[i]=0;
  32.   simp=simp+arryS[i];
  33.   //simp+=arryS[i];
  34.   }
  35.  }
  36.  cout<<"\nSuma pares:  ";
  37.  cout<<spar<<endl;
  38.  cout<<"\nSuma impares: ";
  39.  cout<<simp<<endl;
  40.  getch();
  41. }


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #1 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


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #2 en: 5 Marzo 2013, 22:10 pm »

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.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. main ()
  6. {
  7.  
  8.  int arryc[99],arryS[99],spar=0,simp=0;
  9.  //sleep()=[500];
  10.  cout<<"Serie: "<<endl;
  11.  cout<<"\n";
  12.  
  13.  for(int i=0;i<=99;i++)
  14.  {
  15.     arryc[i]=i+1;
  16.     cout<<arryc[i]<<"\t";
  17.  }
  18.  
  19.  
  20.  for (int i=0; i<=99;i++)
  21.  {
  22.      if ( arryc[i] % 2 == 0)
  23.      {
  24.           //arryS[i]=0;
  25.           spar=spar+arryc[i];
  26.           //spar+=arryS[i];
  27.       }
  28.       else
  29.       {
  30.           //arryS[i]=0;
  31.           simp=simp+arryc[i];
  32.           //simp+=arryS[i];
  33.       }
  34.  }
  35.  
  36.  cout<<"\nSuma pares:  ";
  37.  cout<<spar<<endl;
  38.  cout<<"\nSuma impares: ";
  39.  cout<<simp<<endl;
  40.  
  41.  cin.get();
  42.  
  43. }
  44.  
En línea


leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #3 en: 5 Marzo 2013, 22:44 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 parciales

Citar

(debe de utilizar dos arreglos uno que arroje la serie y otro el resultado de las sumas)

vamos algo como esto:

Código
  1. Serie:
  2.  
  3. 1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17
  4.        18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33
  5.        34      35      36      37      38      39      40      41      42      43      44      45      46      47      48      49
  6.        50      51      52      53      54      55      56      57      58      59      60      61      62      63      64      65
  7.        66      67      68      69      70      71      72      73      74      75      76      77      78      79      80      81
  8.        82      83      84      85      86      87      88      89      90      91      92      93      94      95      96      97
  9.        98      99      100
  10.  
  11. 1       3       6       10      15      21      28      36      45      55      66      78      91      105     120     136     15
  12. 3       171     190     210     231     253     276     300     325     351     378     406     435     465     496     528     56
  13. 1       595     630     666     703     741     780     820     861     903     946     990     1035    1081    1128    1176    12
  14. 25      1275    1326    1378    1431    1485    1540    1596    1653    1711    1770    1830    1891    1953    2016    2080    21
  15. 45      2211    2278    2346    2415    2485    2556    2628    2701    2775    2850    2926    3003    3081    3160    3240    33
  16. 21      3403    3486    3570    3655    3741    3828    3916    4005    4095    4186    4278    4371    4465    4560    4656    47
  17. 53      4851    4950    5051
  18.  
  19. Suma pares:  5100
  20.  
  21.  
  22. Suma impares: 7550
  23.  

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (void){
  5. int arryc[100],arryS[100]={0},spar=0,simp=0;
  6.  //sleep()=[500];
  7.  cout<<"Serie: "<<endl;
  8.  cout<<"\n";
  9.  arryS[0]=1;
  10.  for(int i=0;i<=99;i++){
  11.   arryc[i]=i+1;
  12.   if (i>0)
  13.    arryS[i]+=i+1+arryS[i-1];
  14.   cout<<arryc[i]<<"\t";
  15.  }
  16.  cout<<endl<<endl;
  17.  for(int i=0;i<=99;i++)
  18.    cout<<arryS[i]<<"\t";
  19.  for (int i=0; i<=99;i++) {
  20.  
  21.   if ( arryc[i] % 2 == 0)
  22.      spar=spar+arryc[i];
  23.    else
  24.        simp=simp+arryc[i];
  25.  }
  26.  cout<<endl<<"\nSuma pares:  ";
  27.  cout<<spar<<endl;
  28.  cout<<endl<<"\nSuma impares: ";
  29.  cout<<simp<<endl;
  30.  cin.get();
  31.  return 0;
  32. }
  33.  

Saluditos!. ...
« Última modificación: 6 Marzo 2013, 10:10 am por leosansan » En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #4 en: 5 Marzo 2013, 22:56 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  :¬¬ :¬¬

En línea


acega

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #5 en: 6 Marzo 2013, 00:31 am »

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.
En línea

acega

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #6 en: 6 Marzo 2013, 00:57 am »



Porque además de los números se le pide que guarde en "otro" arreglo las sumas parciales
vamos algo como esto:
Saluditos!. ...


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:
Código
  1. 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 
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #7 en: 6 Marzo 2013, 01:18 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:
Código
  1. 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!. ...
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con arreglos.
« Respuesta #8 en: 6 Marzo 2013, 02:46 am »

Otro detalle que se debe corregir en el programa son los indices utilizados para acceder a los arrays. Al declararse en esta forma:
Código
  1. 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:
Código
  1. int arryc[100],arryS[100]={0},spar=0,simp=0;
  2.  
  3. // ...
  4.  
  5. for (int i = 0; i < 100; i++){
  6.  arryc[i] = i + 1;
  7.  
  8. // ...

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programacion Ayuda en C ARREGLOS
Programación General
smdiegoarmando 3 2,415 Último mensaje 6 Enero 2015, 00:51 am
por Eleкtro
Ayuda con un problema de arreglos en C.
Programación C/C++
noidroid 1 2,304 Último mensaje 26 Noviembre 2013, 06:04 am
por ThePinkPanther
[Ayuda] Invertir arreglos.
Programación C/C++
Zodiak98 4 2,005 Último mensaje 7 Mayo 2014, 21:24 pm
por leosansan
ayuda con forma decreciente con arreglos dev c++
Programación C/C++
nicolas2696 1 2,271 Último mensaje 23 Junio 2014, 02:37 am
por ivancea96
Ayuda: Programación con arreglos
Programación C/C++
furciorifa 1 1,597 Último mensaje 6 Enero 2015, 02:18 am
por Yoel Alejandro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines