Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - strancok

#1
Listo, tenian toda y la entera razon, estaba utilizando mal los arrays, ya les entendi y corregi mi error y ahora funciona tal y como deberia. Les agradezco mucho la ayuda.

asi quedo el for para lo que necesitaba


for (int i = 0; i < cantidadClientes; i++)
{
           .
           .
           .


y ya inicialice la variable total en 0 tambien. Si tienen alguna otra sugerencia seria de gran ayuda.
#2
CitarPunto para el VC++ que si lo hace, la variable total tiene un valor indeterminado (deberias inicializarlo a cero) cuando la usas.

El problema principal es que accedes mal a los arrays como te comente antes, ejemplo si cantidadClientes es 3:

Código (c++) [Seleccionar]
for (int i = 1; i <= cantidadClientes; i++)
{
cin >> cliente[i];
...


Tu codigo accedera a cliente[1], cliente[2] y cliente[3].

Entiendo, entonces el valor correcto para entrar al array, en caso de ser 3 clientes deberia ser con i < cantidadClientes ?? para que pase por las posiciones 0 = 1 , 1 = 2 y 2 = 3 ??

y seguire el consejo de cambiar de compilador, solamente instale ese porque era el de turno para utilizar
#3
Cita de: Eternal Idol en 18 Julio 2019, 16:40 PM
Los elementos de un array estan numerados de 0 en adelante, ejemplo:

int an_arr[3];
an_arr[0] = 1;
an_arr[1] = 2;
an_arr[2] = 3;
an_arr[3] = 4; // Mal, estamos accediendo a memoria que no pertenece al array.


PD. Presta atencion a los warnings:
warning C4700: uninitialized local variable 'total' used

No me sale ningun warning almenos con este compilador, editare y adjuntare imagenes de lo que sale tanto cuando compilo como cuando ejecuto el codigo
#4
Hola a todos, quisiera que me colaboraran para poder encontrar mi error al ejecutar este codigo. Al compilarlo no muestra errores ni advertencias y de hecho funciona bien cuando defino la variable cantidadClientes = 2, con ese valor realiza exactamente lo que deseo que haga, pero con un valor de 1 (aqui falla al ingresar el primer nombre) o 3 (aqui falla al ingresar el tercer nombre), sencillamente no me deja ingresar el nombre del cliente y se sale del codigo arrojando return value 3221225477 y no return 0 como se indica.

Adicional, tambien observe que sale este mensaje al depurar el codigo, Program received signal SIGSEGV segmentation fault.

Soy algo principiante con este lenguaje, espero me puedan colaborar. De antemano gracias por su atencion.

Codigo


#include <iostream>
#include <string>

using namespace std;


int main()
{
int cantidadClientes;

cout << "Cantidad de clientes: ";
cin >> cantidadClientes;

string cliente[cantidadClientes];
int cantidadArticulos[cantidadClientes];
double precioUnitario, subtotal[cantidadClientes], total;

for (int i = 1; i <= cantidadClientes; i++)
{
cout << "Nombre del cliente #"<< i << ": ";
cin >> cliente[i];

cout << "Cantidad de articulos comprados: ";
cin >> cantidadArticulos[i];

for (int j = 1; j<= cantidadArticulos[i]; j++)
{
cout << "Precio unitario del articulo #" << j << " $";
cin >> precioUnitario;
cout << endl;

subtotal[i] = subtotal[i] + precioUnitario;
}

total = total + subtotal[i];
}

for (int k = 1; k <= cantidadClientes; k++)
{
//total = total + subtotal;
cout << "Nombre   " << cliente[k] << " Cantidad Articulos:   " << cantidadArticulos[k] << "  Total Cliente:   " << subtotal[k] << endl;

}

cout << "Total:   " << total;

return 0;
}





Esto es lo que se supone deberia hacer pero solo funciona cuando el numero de clientes es 2, 4 y asi... no se el porque ---->