c++ necesito ayuda

Z

hola necesito informacion sobre como puedo limpiar un vector tipo char dentro de un ciclo while para poder usarlo nuevamente cuando el ciclo vuelva a iniciar

aqui un trozo del programa: (hecho en turbo c++)

char v[25],resp='s';

n=5;
clrscr();
gotoxy(1,2);
printf(" ________________________________________________________________________");
gotoxy(1,3);

printf("| cuadro de notas maximo 15 alumnos | N J Q M |");
gotoxy(1,4);

printf("|
_______________________________________________________|__________|");

gotoxy(1,5);
printf("|_____nombre_____|nota 1|nota 2|nota 3|promedio|obsrevacion_|");

do
{
gotoxy (21,23);
printf (" " );
x=x+1;
n=n+1;
if ((x>-1)&&(x<9)){
gotoxy(1,n);
printf("|____________________|__|__|__|____|__________|",x+1);
}suma=0;
if (x<16){
memset (v,' ', sizeof (25)) ;
gotoxy (2,n);
gets (v); }

el programa se repite hasta 15 veces pero solo lee el nombre una sola vez que tengo que hacer? gracias :)

dagavi

· Eso es C, de C++ no tiene nada.
· Usa el comando [ code][ /code] o en su defecto alguna web tipo pastebin ya que tal y código se lee fatal (smiles, sin nada de indentación...).
· sizeof(25) no tiene sentido. Sizeof retorna el tamaño del tipo que le indicas, sizeof(25) posiblemente te retornará 4. ¿No será este tu problema y lo que quieres hacer es memset(v, '', sizeof(v)) ?

¿Que entiendes por "limpiar un vector de tipo char"?

Buffoncete

Para limpiar un vector:

En C:

#define NUM_ELEMENTS 15

char *vectorChars;
vectorChars = (char *)calloc(NUM_ELEMENTS,sizeof(char));

//Limpiamos
free(vectorChars);
vectorChars = (char *)calloc(NUM_ELEMENTS,sizeof(char));

En C++:

#define NUM_ELEMENTS 15

vector<char>  vectorChars(NUM_ELEMENTS);

//Limpiamos
vectorChars.clear();
BLZKZ

"En c++:

vector<char> vectorChars(NUM_ELEMENTS);"

Perdona mi ignorancia, pero es standar una plantilla con el nombre vector?
De toda la vida en C++ un vector es un puntero al primer elemento y se puede hacer algo parecido a lo que hiciste en C:

1)

#define MAX 10
char vector[MAX]; 

o

#define MAX 10
char *vector;
vector = new char[MAX];
NeB1

#4 El ha gastado la implementación de la clase vector supongo

Buffoncete

vector es una clase que pertenece a la STL (Standard Template Library)

http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html


Es como programar en C++ y no usar las librerías de boost.

Soltrac

#4 De toda la vida eso que has puesto es C y lo q dice #6 es perfectamente válido (y es mas, debería usarse sí o sí).

Pensemos un poco...tienes un sistema ESTÁNDAR de C++ que te crea vectores, te los limpia, te los hace más grandes, más pequeños. ¿Por qué no iba a ser utilizado?.

BLZKZ

#7 en c no hay news como el que he puesto, aunque si formas paralelas de hacerlo (calloc), no me digas que no sabes hacer arrays sin un limite preestablecido :_

y no, no sabia que estaba esa clase en las STL

Buffoncete

lo peor que se puede hacer es mezclar C con C++ como has hecho, o lo haces bien o no lo haces.

Es como hacer en C++:

int a = 97;
char letra_a = (char)a;

Esto está mal, lo correcto es:

int a = 97;
char letra_a = static_cast<char>(a);

Si utilizas C++, úsalo bien, lo mismo que C.

lo único que se permite es meter asm {} en C y C++ para tareas que requieran de un conocimiento extra de la cpu.

NeB1

#9 what what what?? puedo meter código asm dentro de C y C++?? que wapo!! no tenía ni idea xD

Soltrac

#8 Tienes razón, no me había fijado. Lo vi por encima y lo vi muy C XDDDD.

Usuarios habituales