Dev - C++ - ayuda con ejercicio

 
Vista:
sin imagen de perfil

ayuda con ejercicio

Publicado por Macarena (5 intervenciones) el 15/05/2017 22:27:02
El ISBN o “International Standard Book Number” es un número de 10 dígitos usado para identificación de libros, cuyo último dígito es un verificador que se calcula mediante una operación con los dígitos anteriores.
El dígito verificador es obtenido mediante el residuo de S para 11.
Donde S es la suma de una vez el primer dígito, más dos veces el segundo dígito, más tres veces el tercer dígito, .. . , más nueve veces el noveno dígito.
Escriba un algoritmo que lea un número ISBN y verifique si fue escrito de forma correcta.
La suma S para el ISBN 9684443242 es:
1*9+2*6+3*8+4*4+5*4+6*4+7*3+8*2+9*4 = 178
El digito verificador es residuo(178/11) que es igual a 2.


alguien me puede ayudar lo necesito en c++ por favor
gracias!!
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 con ejercicio

Publicado por agustin (522 intervenciones) el 15/05/2017 23:10:19
Y si da como residuo 10? Habría 11 dígitos.
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

ayuda con ejercicio

Publicado por Macarena (5 intervenciones) el 15/05/2017 23:52:21
mm no lo se así sale el ejercicio lo copie tal cual
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: 22
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con ejercicio

Publicado por Héctor (17 intervenciones) el 04/06/2017 04:43:23
Coloca una 'X'. (http://gaussianos.com/detectar-si-un-isbn-es-erroneo/)
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: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con ejercicio

Publicado por agustin (522 intervenciones) el 16/05/2017 00:02:49
Te lo pongo en C pero es muy sencillo pasarlo a C++:
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
#include <stdio.h>
#include <string.h>
 
int main ()
{
	char isbn[100];
	int largo,control,total=0,i,error=0;
 
	printf ("Introduce el codigo: ");
	gets (isbn);
	largo=strlen (isbn);
 
	if (largo==10){
		for (i=0; i<largo; i++){
			if (!isdigit(isbn[i])){
				error=1;
			}
		}
		if (error==0){
			for (i=0; i<largo-1; i++){
				total+=(i+1)*(isbn[i]-'0');
			}
			control = total % 11;
			if (control != (isbn[9]-'0')){
				error=2;
			}
		}
	}else {
		error=1;
	}
	switch (error){
		case 0:
		printf ("Formato correcto.");
		break;
 
		case 1:
		printf ("Formato incorrecto.");
		break;
 
		case 2:
		printf ("El digito de control no es valido.");
		break;
	}
	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
sin imagen de perfil

ayuda con ejercicio

Publicado por cristian (4 intervenciones) el 06/06/2017 04:11:03
Tiene un error de compilacion en la linea 15 y no se cual es???????
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
Imágen de perfil de Johann

ayuda con ejercicio

Publicado por Johann (1 intervención) el 13/09/2021 19:14:03
Oye yo lo corregí pero no compila, supongo que aún tengo errores. Peor te puede servir


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cctype>

int main()
{
char isbn[100];
int largo, control, total = 0, i, error = 0;

std::cout << "Introduce el codigo: ";
std::string isbn;
std::cin >> isbn;
//gets(isbn);
largo = strlen(isbn);

if (largo == 10) {
for (i = 0; i < largo; i++) {
if (!isdigit(isbn[i])) {
error = 1;
}
}
if (error == 0) {
for (i = 0; i < largo - 1; i++) {
total += (i + 1) * (isbn[i] - '0');
}
control = total % 11;
if (control != (isbn[9] - '0')) {
error = 2;
}
}
}//cierra if

else {
error = 1;
}//cierra else

switch (error) {
case 0:
printf("Formato correcto.");
break;

case 1:
printf("Formato incorrecto.");
break;

case 2:
printf("El digito de control no es valido.");
break;
}//cierra switch(error)

return 0;
}//cierra main
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