Dev - C++ - [AYUDA]Reemplazar elementos repetidos de un vector

 
Vista:

[AYUDA]Reemplazar elementos repetidos de un vector

Publicado por Jhonla (6 intervenciones) el 01/02/2017 09:46:38
Buenas no consigo dar con esta solución, tengo como condición usar solo el ciclo while nada más y necesito cambiar un elemento repetido de un vector por -1.

ejemplo:
Ejemplo:
V = (2, 4, 2, 4, 0) quedando tras la lectura como (2, 4, -1, -1, 0)
Número de modificaciones c = 2

Solo puedo hacerlo con while.
lo que pasa es que solo se compara si hay dos números repetidos consecutivamente, pero si hay un numero y el otro repetido esta en cualquier posición, mi código no lo detecta... ¿una ayuda please?

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
#include <stdio.h>
main()
{
 
int arreglo[5], n,cambios,i,j,temp;
printf("Ingrese el elemento\n");
i=0;
while(i<=4)
{
scanf("%d",&arreglo[i]);
i++;
}
 
cambios=0;
while(i<5) {
 
if(arreglo[i+1]==arreglo[i])
{
cambios++;
arreglo[i]=-1;
 
}
 
}
i++;
 
printf("elementos\n");
i=0;
while(i<=4)
{
printf("%d\n", arreglo[i]);
 
i++;
}
getchar();
return 0;
 
printf("\n%d veces",cambios);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

[AYUDA]Reemplazar elementos repetidos de un vector

Publicado por agustin (522 intervenciones) el 01/02/2017 10:43:12
¿Algo así?
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
#include <stdio.h>
 
#define SIZE_ARRAY 5
main()
{
	int arreglo[SIZE_ARRAY], cambios,i,j,total;
 
	i=0;
	while (i<SIZE_ARRAY){
		printf("Ingrese el elemento %i: ",i);
		scanf("%d",&arreglo[i]);
		i++;
	}
	putchar ('\n');
	total=0;
	i=0;
	while (i<SIZE_ARRAY) {
		cambios=0;
		j=i+1;
		while (j<SIZE_ARRAY){
			if(arreglo[j]==arreglo[i] && arreglo[j] !=-1)
			{
				cambios++;
				arreglo[j]=-1;
			}
			j++;
		}
		if (cambios > 0){
			printf ("El valor %d se repite %d veces\n",arreglo[i],cambios);
			total+=cambios;
		}
		i++;
	}
 
	printf("\nelementos:\n");
	i=0;
	while(i<SIZE_ARRAY)
	{
		printf("%d", arreglo[i]);
		if (i <SIZE_ARRAY-1){
			putchar(',');
		}
		i++;
	}
	printf("\n\nNumero de modificaciones: %d\n",total);
	getchar();
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

[AYUDA]Reemplazar elementos repetidos de un vector

Publicado por Thanatos (199 intervenciones) el 01/02/2017 13:10:53
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
#include <stdio.h>
 
#define SIZE 5
 
int main(void) {
    int numeros[SIZE] = { 0 };
    int nCambios = 0;
    int i = 0;
 
    printf("Ingrese los %d numeros:\n", SIZE);
    while (i < SIZE) {
        printf("numeros[%d] = ", i + 1);
        scanf("%d", &numeros[i]);
 
        int j = 0;
        while (j < i) {
            if (numeros[j] == numeros[i] && numeros[j] != -1) {
                numeros[i] = -1;
                ++nCambios;
            }
            ++j;
        }
        ++i;
    }
    printf("\n");
 
    i = 0;
    while (i < SIZE) {
        printf("%d ", numeros[i]);
        ++i;
    }
    printf("\nmodificaciones = %d\n", nCambios);
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

[AYUDA]Reemplazar elementos repetidos de un vector

Publicado por Jhonla (6 intervenciones) el 01/02/2017 14:50:20
Oh, muchas gracias por la rapidez chicos, sencillo parece que era pero no daba con algo que me faltaba y era eso, gracias e aprendido de vosotros!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[AYUDA]Reemplazar elementos repetidos de un vector

Publicado por Ed (1 intervención) el 26/09/2019 05:57:06
Yo tenia un ejercicio similar. Lo resolví de la siguiente manera

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
/*Diseñar un subprograma que dado un vector que pueda contener elementos duplicados
diferentes de cero, le reemplace cada elemento repetido por un cero y encuentre el número
de modificaciones realizados.*/
 
#include <iostream>
#include <conio.h>
using namespace std;
 
int vector[2000],tam,var,contador=0;
void leyendo();
void duplicado();
 
int main(){
	leyendo();
	duplicado();
	cout<<"El vector finalmente quedaria asi: "<<endl;
	for(int i=0;i<tam;i++){
		cout<<vector[i]<<endl;
	}
	cout<<"Y habia numeros repetidos "<<contador<<" veces."<<endl;
	system("PAUSE");
}
 
void leyendo(){
 cout<<"Ingrese el tamañado del vector: ";
 cin>>tam;
 for(int i=0;i<tam;i++){
 	cout<<"Ingrese el valor "<<i+1<<" del vector: ";
 	cin>>vector[i];
 }
}
 
void duplicado(){
	for(int i=0;i<tam;i++){
		for(int j=0;j<tam;j++){
			if(vector[j]==vector[j+1]){
				vector[j]=0;
				contador++;
			}
		}
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar