Programación y Fundamentos de Informática

Informática. Computación. Lenguaje C. Datos. Declaración de variables. Operadores. Entradas y Salidas. Sentencias de control. Estructurados. Arrays. Estructuras. Enumeraciones. Usuarios

  • Enviado por: El remitente no desea revelar su nombre
  • Idioma: castellano
  • País: España España
  • 51 páginas

publicidad
cursos destacados
Solución a las Pruebas PISA 2012
Solución a las Pruebas PISA 2012
El  motivo de la creación de este curso, que en realidad es más una serie de problemas resueltos, se...
Ver más información

Cómo organizar tu horario con óptima eficiencia
Cómo organizar tu horario con óptima eficiencia
Que es para ti el tiempo? Tu manejas el tiempo o dejas que el tiempo te maneje y te pones nervioso pensando que no...
Ver más información


TEMA 1 INTRODUCCIÓN AL C

  • CONCEPTOS GENERALES

  • EL LENGUAJE EN C

  • ELEMENTOS DE C

  • ESTRUCTURA DE UN PROGRAMA EN C

  • CONCEPTOS GENERALES

  • Programa.- Conjunto de instrucciones ejecutadas secuencialmente.

    En windows son los .EXE -> escritos en codigo maquina.

    El “C” es un lenguaje de alto nivel

    Fichero fuente .c compilador de C .Exe

    .ccp

    .obj Linker

    Preprocesador

    .h

    Entorno de C

    Conjunto de todas las herramientas de programación necesarias.

    Nosotros vamos a utilizar el BC++ 5.0 que dispone de:

    • Compilador

    • Preprocesador ( #include ) llamada al preprocesador

    • Linker

    • Editor

    • Archivos de cabecera ( .h)

    1.2 EL LENGUAJE C

    Es un lenguaje de medio-alto nivel, de programación es estructurada y modular.

    1.3 ELEMENTOS DE C

    El código fuente esta dividido en tokens.

    Tonken.- Unidad mínima en que el compilador descompone el fichero fuente para traducirlo.

    TIPOS DE TOKENS:

    • Palabras claves.- Son 32; if, incluye…

    • Identificadores.- Nombre que se designa a una entidad. Nombre de variable a..z; A..Z; _ ; 0..9.

    • Constantes.- Valor que no cambia durante la ejecución

    - Numéricas ( real, entera)

    -Caracteres `b'

    -Cadena de caractres “hola

    • Operadores.- +,-,++,….

    • Separadores.

    - uno o más espacios en blanco

    - Salto de línea

    - Tabuladores

    • Comentarios.- /*………*/ //………

    Sentencias simples acaban en “;”

    Sentencias compuestas

    {

    ……………….;

    ……………….;

    ……………….;

    }

    1.4 ESTRUCTURA DE UN PROGRAMA EN C

    #include <sodio.h> //esto es un identificador

    #include <conio.h>

    main()

    {

    printf(“hola”);

    getch(); //lee el teclado hasta pulsar una tecla “get character”-> getch()

    }

    TEMA 2 TIPOS DE DATOS

    2.1 CONCEPTO DE VARIABLE

    2.2 DECLARACIÓN DE VARIABLES

    2.3 OPERADORES

    2.4 E/S DE DATOS

    2.1 CONCEPTO DE VARIABLE

    Variable.- parte de la memoria a la que se le asigna un nombre

    Tipos de datos.- (Trae False-> 1bit) ( 0-256 -> 8bit)

    2.2 DECLARACIÓN DE VARIABLES

    Tipo simple ( nº bits)

    • char

    • int

    • float

    • double

    char -> Guarda caracteres lo que están `0' comillas simples,p.e. c=';':

    int -> (integer) Numeros enteros -n,…-2,-1,0,1,2,…,n

    int a;

    a=83;

    float, double.- Son para variables de números reales. La diferencia esta en el tamaño del dato, la precisión. double>float.

    El double no lo utilizaremos.

    Nota: La variable hay que declararla antes de utilizarse. Normalmente en el inicio del main()

    Ojo A=0

    a=0 A!=a se distinguen mayúsculas y minúsculas.

    Se puede dar un valor inicial a la variable al declararla.

    int a=0; es lo mismo que int a;

    a=0;

    • signed-unsigned ( char, int ). Se pone antes “signed char”. Por defecto una variable guarda valores negativos. Si pongo unsigned:

    int a;

    a!=-9;

    Se utiliza para ahorrar memoria

    8 bit ( 0-255, -128-127)

    Si necesitamos guardar de 0 a 200 con int; no vale,

    si ponemos insigned int; si vale: 0-256.

    • short - long (int). Sirve para ampliar el rango de almacenamiento “long int;”

    Por defecto es short ( el rango estandar)

    • long (double)

    TIPO

    TAMAÑO

    APROX.

    RANGO MÍNIMO ANSI C

    char

    8

    -128 a 127

    unsigned char

    8

    0 a 255

    int

    16

    -32.768 a 32.767

    unsigned int

    16

    0 a 65.535

    long int

    32

    -2.147.483.648 a 2.147.483.647

    unsigned long int

    32

    0 a 4.294.967.295

    float

    32

    -1038 a 1038-1 (6 dígitos de precisión decimal)

    double

    64

    -10308 a 10308-1 (10 dígitos de precisión decimal)

    long double

    80

    -104932 a 104932-1 ( 10 dígitos de precisión decimal)

    2.3 OPERADORES

    • De asignación.- Asigna el valor a una variable “=”, variable=valor;

    • Aritméticos

    • Lógicos

    • Relacionales

    De asignación variable=valor;

    Valor =>cte (a=20);

    Variable ( a=b);

    Exp (a=7*b+5-c);

    Fun. ( a=fun.);

    int a=3; b=4;

    b=a;

    ¿Qué valores mostra para a y b?

    a=3 y b=3

    a=2; // asignamos este nuevo valor para a

    ¿Qué valores mostra para a y b?

    a=2 y b=3

    Aritméticos:

    +, - , * , /, %

    % -> Es el resto de una división. Siempre tiene que ser int sino hay que convertirla (int)a

    int a=4,b=3,resto; //4/3 => resto 1

    resto=a%b; a=int y b= int siempre ¾=0 y resto=3

    Agrupación de expresiones

    Orden jerárquico:

    1º) (….) Paréntesis

    2º) - Menos ( de un número p.e.: -4)

    3º) */ Producto y división en ese orden

    4º) +- Suma y resta

    Ejercicio agrupar las siguientes expresiones:

    y=6+12/6*2-1=9

    y=(6+12)/6*2-1=5

    y=6+12/6*(2-1)=8

    y=6+12/(6*2)-1=6

    El resultado de una operación es siempre el de mayor grado.

    p.e.:

    int a=1,b=2,c;

    c=a*b; //int*int=int luego c=int

    int a=1,c;

    float b;

    c=a*b; //int*float=float c=float

    int a=1,b=2,c;

    c=a/b;

    //Lo que muestra c es 0

    int a=1,b=2;

    float c;

    c=a/b

    //Lo que muestra c es 0

    Tenemos que hacer un Casting

    int a=1,b=2;

    float c;

    c=(float)a/b //ojo que lo que tenemos es float/int el casting solo afecta a la variable a

    Operadores de asignación compuesta

    V1=V1<operador +-*/%>V2; Se abrevia V1<operador>=V2;

    p.e.: V1+=V2; =>V1=V1+V2

    p.e.: V1++; => V1=V1+1

    p.e.: V1--; => V1=V1-1;

    Con todos los operadores se forman expresiones p.e.: a+b-5*c

    2.4 E/S DATOS

    printf( ); entrada de datos

    scanf( ); salida de datos

    Esta funciones están en el fichero de cabecera <stdio.h>

    printf( ); Muestra datos en la unidad de salida por defecto ( si no se indica nada es la pantalla )

    printf(“Cadena de control”, arg1, arg2,….argn);

    La cadena de control:

    • Texto.

    • Códigos de los formatos de los argumentos que se quieren mostrar.

    Ejemplo:

    printf(“hola mundo”); En este caso no tenemos argumentos.

    Los códigos de los formatos que van dentro de las comillas van precedidos por %, a continuación tenemos que poner los argumentos.

    printf(“%d”,a); Pongo %d en cualquier parte de las comillas, puesto que se va a sustituir por el valor de la variable a.

    printf(“%d %d”,a,b); Es importante el orden, puesto que en este caso primero va a mostrar a y despues b.

    Códigos de conversión:

    Código

    Tipo variable

    Comentario

    %d o %i

    int

    Muestra enteros

    %u

    unsigned int

    Muestra int sin signo

    %c

    char

    Muestra carácter “uno solo”

    %f

    float

    Muestra float

    %e

    double

    “e” viene de notación científica

    p.e. 6.5 con %e => 6.500000+01

    %g

    Muestra el número en el menor de float o double.

    Discrimina o %f o %e

    %s

    Muestra cadena de caracteres “string”

    %o

    octal Muestra el valor en código octal base 8

    %x

    Hexadecimal Muestra el valor en código hexadecimal

    %%

    Muestra el carácter “%”

    p.e. printf(“100%%”); => 100%

    scanf( ); Lee datos por teclado

    Sintaxis:

    scanf(“%caracter_conversion1 %CC2”,&arg1,&arg2);

    El orden de los argumentos sigue el orden que expresa.

    scanf(“%d %d”,&a,&b);

    scanf solo lee, no muestra nada, hay que poner un printf antes.

    printf(“Introduce 2 números:”);

    scanf(“%d %d”,&a,&b);

    El programa muestra por pantalla:

    Introduce 2 numeros: 70 4

    El programa busca un espacio o en blanco o un salto de linea para leer el segundo número.

    Si queremos leer dos numeros separados por comas, damos el formato a la entrada.

    p.e.:

    scanf(“%d,%d”,&a,&b);

    Por pantalla:70,4

    Mejor no utilizar la coma.

    Ejemplo:

    Programa que lee una variable char, int, float.

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    char c;

    int a;

    float b;

    printf(“Introduce un caracter, un entero y un real: “);

    scanf(“%c %d %f”,&c,&a,&b);

    Ejemplo

    Programa que calcula la resistencia equivalente de dos resistencias en paralelo.

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //definimos variables

    float R1,R2,Re;

    printf(“Introduce los valores de R1 y R2 para calcular su equivalente paralelo:”);

    scanf(“%f %f”,&R1,%R2);

    //calculos

    Re=(R1*R2)/(R1+R2);

    //salida por pantalla

    printf(“La Re para una R1=%f u R2=%f es Re=%f”,R1,R2,Re);

    getch();

    }

    Nota: \n dentro de las comillas de un printf() genera un salto de linea.

    Si queremos mostrar por pantalla el carácter “\” escribimos “\\”

    Ejemplo:

    Programa que convierta una temperatura de ºF a ºC (ºC=5/9(ºF-32))

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //definicion de variables

    float c,f;

    printf(“Introduce la temperatura en ºF a convertir en ºC:”);

    scanf(“%f”,&f);

    //Calculos

    c=(5*(f-32))/9; //daria igual poner 5*(f-32)/9 por la prioridad que tiene * sobre /

    //Salida

    printf(“\nLa temperatura en ºf=%f en ºC es igual a %fºC”,f,c);

    getch();

    }

    NOTA:

    (5/9)*(F-32) Seria erroneo pues tenemos int/int=int y la division es float.

    para solucionar esto escribimos (5/9.0)*(f-32)

    TEMA 3 SENTENCIAS DE CONTROL

    3.1 OPERADORES RELACIONALES

    3.2 OPERADORES LOGICOS

    3.3 SENTENCIA IF

    3.4 SENTENCIA SWITCH

    3.5 BUCLE WHILE

    3.6 BUCLE DO WHILE

    3.7 BUCLE FOR

    3.8 SENTENCIA BREAK

    3.9 SENTENCIA CONTINUE

    3.1 OPERADORES RELACIÓNALES

    Devuelve cierto o falso según se cumpla la condición expresada o no.

    FALSO -> Cero

    CIERTO -> Distinto de cero

    < menor

    > mayor

    <= menor o igual

    >= mayor o igual

    == algo igual a algo (doble igual. Esto es erróneo solo es para dos variables no más a==b==c)

    != algo distinto a algo (a!=b)

    3.2 OPERADORES LÓGICOS

    Unen expresiones hechas con operadores relacionales

    && AND

    || OR

    ! NOT

    Lista de preferencia de operadores

  • ( )

  • ! ++ -- -unario (p.e. -7)

  • */%

  • +-

  • < <= > >=

  • == !=

  • &&

  • ||

  • =+=-=*=/=%=

  • Las preferencias también van de izquierda a derecha en el orden que aparecen arriba.

    3.3 SENTENCIA IF

    Permite ejecutar o no una sentencia o un conjunto de sentencias en función de una expresión.

    if (expresión)

    sentencia;

    no

    exp

    si

    sentencia

    Si queremos tener mas de una sentencia hay que ponerlas entre llaves

    if (expresión)

    {

    sentencia A;

    sentencia B;

    }

    Nota: No es conveniente poner las llaves con solo una sentencia, lo valoran mal en el examen.

    Ejemplo

    int A=-8;

    if (A>0)

    printf(“1”);

    printf(“2”);

    ¿Cuál es la salida?

    • Ninguna

    • 1

    • 2 -> correcta

    ELSE

    if (expresión)

    {

    ……………..;

    ……………..;

    }

    else

    {

    ……………..;

    ……………..;

    }

    IF ELSE ANIDADOS

    if (expresion1)

    {

    ……………..;

    ……………..;

    }

    else if (expresion2)

    {

    ……………..;

    ……………..;

    }

    else if (expresion3)

    {

    ……………..;

    ……………..;

    }

    Programa que calcule el área de un cuadrado y un circulo (pi*r2)

    #include <stdio.h>

    main()

    {

    int opcion;

    float radio,lado,area;

    printf(“1.-Area del circulo”);

    printf(“2.-Area del cuadrado”);

    printf(“Elige la opcion deseada”);

    scanf(“%d”,&opcion);

    if (opcion==1)

    {

    printf(“introduce el radio”);

    scanf(“%f”,&radio);

    area=3.1416*radio*radio

    printf(“El area del circulo es %f”,area);

    }

    else if (opcion==2)

    {

    printf(“Introduce el lado del cuadrado”);

    scanf(“%f”,&lado);

    area=lado*lado;

    printf(“El area del cuadrado es %f”,area);

    }

    }

    Ejemplo relación if..else:

    int A=9

    if (A>0)

    if (A>7)

    printf(“A”);

    else

    printf(“B”);

    El else corresponde al if mas cercano

    El resultado es = A

    Si int A=3 el resultado seria B

    3.4 SENTENCIA SWITCH

    Es similar a un if else multiple.

    Ejecuta las sentencias cuya etiqueta coincide con el valor de la expresión.

    Las etiquetas tienen que ser constantes.

    Switch (variable)

    {

    case cte1: sentencia1;

    break;

    case cte2: sentencia2;

    break;

    case cte3: sentencia3;

    break;

    }

    Con break saltamos todo lo demas y salimos del switch.

    Sin no ejecutaría secuencialmente todo lo que hay hacia abajo.

    switch (variable)

    {

    case cte1: sentencia1;

    sentencia2;

    sentencia3;

    default: sentencia4;

    sentencia5;

    }

    En el caso de que no se cumpla ninguno de los anteriores se utiliza el default . No hace falta poner break pues siempre se escribe al final.

    Nota: Con switch no hace falta poner {} para distinguir cada caso.

    switch(opcion)

    {

    case 1: sentencias area del circulo;

    break;

    case 2: sentencias area del cuadrado;

    break;

    default: sentencias mensaje de aviso error;

    }

    Programa que diga cuantos dias tiene un mes:

    {

    case 1:

    case 2:

    case 3:

    case 5:

    case 7:

    case 8:

    case 10:

    case 12: printf(“31 dias”);

    break;

    case 2: printf( “28 dias”);

    break;

    case 4:

    case 6:

    case 9:

    case 11: printf(“30 dias”);

    break;

    default: printf(“el mes es incorrecto”);

    }

    Los bucles permite repetir la ejecución de una/s sentencia/s en función del valor de la expresión.

    3.5 BUCLE WHILE

    Sintaxis:

    while (exp)

    sentencia;

    while (exp)

    {

    sentencia1;

    sentencia2;

    sentencia3;

    }

    Interaciones es el número de vueltas que da.

    El mínimo es = 0

    El máximo es = n

    p.e.:

    int a;

    a=1;

    while (a<10000)

    printf(“hola”);

    Se ejecuta infinitas veces

    p.e.:

    int a;

    a=1;

    while (a<10000)

    {

    printf(“hola”);

    a=a*10;

    }

    Secuencia del bucle

    a= 1

    hola

    a=10

    hola

    a=100

    hola

    a=1000

    hola

    a=10000

    Vemos 4 holas

    3.6 BUCLE DO..WHILE

    do

    sentencia;

    while (exp);

    Ejecuta sentencias mientras while(exp) sea correcto.

    do

    {

    sentencia1;

    sentencia2;

    sentencia3;

    }

    while(exp);

    p.e. para que se introduzca correctamente el mes:

    do

    {

    printf(“introduce un mes”);

    scanf(“%d”,&mes);

    }

    while(mes<1 || mes >12); //los incorrectos

    3.7 BUCLE FOR

    for(iniciacion;expresion;actualizacion)

    sentencia;

    for(iniciacion;expresion;actualizacion)

    {

    sentencia1;

    sentencia2;

    sentencia3;

    }

    Si solo tiene una sentencia no se ponen llaves.

    Si quisiéramos inicializar varias variables las separamos por “comas”.

    3.8 SENTENCIA BREAK

    Se puede utilizar para salir de un bucle, aunque no es buena programación estructurada.

    for(i=1;i<=10;i++)

    {

    printf(“hola”);

    if (i==5) break;

    Es mejor poner i<=5

    3.9 SENTENCIA CONTINUE

    Sirve para volver al inicio de un bucle ( no inicializar) antes de ejecutar las sentencias del cuerpo de ese bucle.

    for(i=1;i<=10;i++)

    {

    if (i==5) continue;

    printf(“hola”);

    }

    No mostraría por pantalla hola cuando i==5.

    Tampoco es de buena programación.

    **** EJERCICIOS ****

    MOSTRAR POR PANTALLA LOS NUMEROS DEL 0 AL 100

    #include <stdio.h>

    main()

    {

    int i;

    i=0;

    while (i<=100)

    printf(“%d\n”,i);

    i++;

    }

    #include <stdio.h>

    main()

    {

    int i;

    i=0

    do

    {

    printf(“%d\n”,i);

    i++;

    }

    while(i<=100);

    #include <stdio.h>

    main()

    {

    int i;

    for(i=0; i<100; i++)

    printf(“%d\n”,i);

    }

    CALCULAR EL FACTORIAL DE UN NUMERO n INTRODUCIDO POR TECLADO n>=0

    ( no existen factoriales de números negativos)

    #include <stdio.h>

    main()

    {

    int n, i, factorial=1; //si =0 al multiplicar seria siempre 0

    do

    {

    printf(“Introduce n:”);

    scanf(“%d”,&n);

    }

    while (n<0);

    for(i=n; i>0; i--)

    factorial=factorial*i;

    printf(“factorial %d”,factorial);

    Factorial i

    1 4

    4 3

    12 2

    24 1

    24 0

    Podriamos depurar el programa porque al multiplicar por 1 es simpre lo mismo

    for(i=n;i>1;i--)

    acabaria más rapido

    ESCRIBIR UN PROGRAMA EN C QUE DADO UN NUMERO POR TECLADO CUENTE SU Nº DE CIFRAS.

    int n,cifras=0;

    printf(“introduce n”);

    scanf(“%d”,&n);

    if (n==0)

    cifras=1;

    else

    while (n>0)

    {

    cifras++;

    n=n/10;

    }

    printf(“el numero de cifras %d”,cifras);

    p.e.

    n=9130

    9130/10=913 resto 10

    913/10=91 resto 3

    91/10=9 resto 1

    9/10=0

    SUMAR LAS CIFRAS DE UN NUMERO n LEIDO POR TECLADO Y MOSTRAR LA SUMA DE SUS CIFRAS Y EL DATO LEIDO POR TECLADO.

    int n, suma=0, aux;

    printf ("introduce n: ");

    scanf("%d",&n) ;

    while (aux>0)

    {

    suma=suma+aux%10 ;

    aux=aux/10 ;

    }

    printf("la suma es %d para el numero %d",suma,n);

    PROGRAMA QUE SAQUE LOS 100 PRIMEROS NÚMEROS DIVISIBLES POR 3 EMPEZANDO POR EL 0

    int i=0,contador=0;

    while (contador<100)

    {

    if (i%3==0)

    {

    printf(“%d”,i)

    contador++

    }

    i++

    }

    Escribir un programa en C que dado un numero por teclado diga si es primo.

    (nºprimo es divisible por 1 y por el mismo)

    n>0

    esprimo=1 suponemos que cumpla condición

    #include <stdio.h>

    main()

    {

    int n, divisor, esprimo=1;

    do

    {

    printf(“Introduce el numero:”);

    scanf(“%d”,&n);

    while(n<=0);

    for (division=2;divisor<n;divisor++);//no ponemos el 1 puesto que siempre es divisible. divisior<n excluimos el n puesto que n/n=1

    if (n%divisor==0)

    esprimo=0;

    if (esprimo==1)

    printf(“El numero es primo”)M

    else

    printf(“el numero no es primo);

    }

    Podriamos Mejorarlo para que el bucle

    for(divisor=2;divisor<n&esprimo==1;divisor++)

    También podríamos utilizar break pero mejor lo de antes

    {

    esprimo=0;

    break;

    otra forma

    divisor<n/2+1 pero solo se cumpliría en el caso de la mitad en el resto ya no se cumpliría

    Febrero-2001 Septiembre-2001

    Programa en C que dado un numero entero sume las posiciones pares, luego sume las posiciones impares y que muestre por pantalla ambas sumas y el numero inicial

    Ej: 1234 muestre 6 4 1234 (6 pares 4 impares)

    main()

    {

    int n, sp=0,si=0, aux,posicion=0 ; //posicion=1 tal como nos nada en el enunciado no puede ser, pero no esta mal del todo.

    printf(“Introduce n”);

    scanf(“%d”,&n);

    aux=n; //guardo copia del valor inicial

    while (aux>0) //podriamos poner != por que n podria ser negativo pero no estaria mal

    {

    if (posición%2==0) //ojo este caso es par

    sp=sp+aux%10; //suma pares=suma pares + aux%10 que extrae el valor

    else

    si=si+aux%10;

    aux=aux/10;

    posicion++ ;

    }

    printf(“%d %d %d”,sp,si,n);

    }

    TEMA 5 TIPOS DE DATOS ESTRUCTURADOS

    5.1 ARRAYS

    5.1.1 ARRAYS UNIDIMENSIONALES

    5.1.2 ARRAYS MULTIPLESDIMENSIONALES

    5.1.3 ARRAYS DE CARACTERES ( STRINGS)

    5.2 ESTRUCTURAS

    5.3 ENUMERACIONES

    5.4 TIPOS DEFINIDOS POR EL USUARIO

    5.1 ARRAYS

    Un array es una colección de elementos del mismo tipo

    5.11 ARRAYS UNIDIMENSIONALES

    Un array de una dimensión es un vector

    Para definirlo

    Tipo nombre[tamaño máximo];

    Tipo = Tipo de elementos del vector int,float,char,double ( los de tipo char son los string 5.1.3 que no veremos.

    Nombre = Nombre de la variable del vector

    Tamaño = Es reservar memoria para los elementos del vector.

    int v[10]; //10 posiciones enteras

    Particularidad la primera posición es 0, luego la última seria n-1

    Un array se puede inicializar cuando se declara.

    int v[10]={1,2,3,4,5,6,7,8,9,10} //La posición 0 hay de valor 1 y en la 9 hay de valor 10

    Si doy valores iniciales al vector no hace falta poner el tamaño.p.e.:

    int v[]={10,2,3,5} //seria de tamaño 4

    Pero mejor inicializarlo con el número del tamaño.

    Como acceder al elemento:

    v[posición]

    p.e. v[0] se refiere al elemento de la posición 0.

    v[0]=20; // guarda 20 en la posición 0

    se puede comparar. if(v[4]==100) //compara lo hay en la posición 4 con el valor 100

    Podemos hacer lo mismo que hemos echo hasta ahora

    Ojo podemos salirnos del rango del vector

    int v[ 10];

    v[-4] v[20] v[10] Estaríamos fuera de rango

    Si quiero dar valores por teclado a v hay que hacerlos uno a uno con un bucle for

    Ejemplo

    Leer dos vectores de un tamaño 4 y determinar si son o no iguales. ( comprobar significa que en la misma posición del vector tienen el mismo dato)

    Hay que comparar dato a dato cada valor del array

     

    #include <stdio.h>

    main()

    {

    int va[4],vb[4],i,soniguales=1; //ojo la variable para recorrer bucles “i”

    for (i=0;i<4;i++) //de esta forma i<4 ya no incluimos a 4 es la mejor forma

    {

    printf(“introduce va[%d]: ”,i);

    scanf(“%d”,&va[i];

    }

    for (i=0;i<4;i++)

    {

    printf ( “Introduce vb[%d]: “,i);

    scanf(“%d”,&vb[i]);

    }

    for ( i=0;i<4 && soniguales==1; i++) //ojo si solo ponemos soniguales significa que soniguales==1 es una variable booleana. True false

    for ( i=0;i<4 && sonniguales; i++)

    if(va[i]!=vb[i]

    soniguales=0;

    if (soniguales)

    printf(“son iguales”);

    else

    printf(“son distintos”);

    }

    5.1.2 ARRAYS MULTIDIMENSIONALES

    Un array de mas de una dimensión son los denominados matrices.

    Para declara una matriz hay que declarar:

    Tipo nombre[T1][T2] [T3].....[TN] //cada corchete es una dimensión

    El limite de las dimensiones las limita el compilador.

    float m[4][3]; //es una matriz de 4 filas y tres columnas

    como acceder a los datos:

    m[0][0]; //fila 0, columna 0

    m[3][0]; //fila 3, columna 0

    Tenemos que trarar los elementos de uno en uno.

    Cuando se declara una matriz tambien se pueden dar valores iniciales.

    float [3][2] = {1,2,3,4,5,6} //3 filas y 2 columnas (0,0)(0,1)(1,0)(1,1)(2,0)(2,1)

    otra forma mas clara

    float [3][2] = {{1,2},{3,4},{5,6}} // si le doy menos relementos el resto los rellena con ceros. Si doy mas valores da error. Nos salimos del rango.

    EJERCICIO SEP.2001

    Dada una matriz de numeros reales, pedir nº de filas y columnas, como maximo la matriz de 10*20. Mostra el mayor y menor elemento ( tb hay que mostrar la matriz)

    #define MAXFILAS 10

    #define MAXCOLS 10

    #include <stdio.h>

    main()

    {

    float m[MAXFILAS][MAXCOLS];

    int nfilas,ncols,max,min;

    do

    {

    printf”numero filas?”);

    scanf(“%d”,&nfilas);

    }

    while(nfilas<2 || nfilas>MAXFILAS);

    for(i=0; i<nfilas;i++)

    for(j=0<ncols;j++)

    {

    printf(“introduce m[%f][%f],i,j);

    scanf(“%f”,&m[i][j]);

    }

    min= [0][0];

    max=[0][0];//cojemos el primer valor para comprara

    for(i=0; i<nfilas;i++)

    for(j=0<ncols;j++)

    {

    if m[i][j]<min)

    min=m[i][j];

    if m[i][j]>max)

    min=m[i][j];

    printf(“el maximo es %f”, max);

    printf(“el minimo es %f”,min);

    //vamos a mostra la matriz para que me aparezcan como matriz.

    for (i=0;i<nfilas;i++)

    {

    for(j=0;j<ncols;j++)

    printf(“%f “,m[i,j]);//tambien %f\t tabulador

    printf(“\n”); //salto de linea cada fila

    }

    TEMA 4 PROGRAMACION ESTRUCTURADA

    4.1 CONCEPTO DE BLOQUE DE PROGRAMA. PROGRAMA PRINCIPAL Y FUNCIONES

    4.2 CARACTERISTICAS DE LAS FUNCIONES

    4.3 PASO DE PARAMENTROS A UNA FUNCION: PASO POR VALOR Y PASO POR REFERENCIA

    4.4 AMBITO DE LAS VARIABLES

    4.5 LIBRERIAS DE FUNCIONES MAS COMUNES

    4.1 CONCEPTO DE BLOQUE DE POGRAMA

    Un bloque de programa es un conjunto de instrucciones relativas a la misma idea.

    Los bloques se separan por separadores, puden ser lineas en blanco, comentarios….

    De un bloque del programa principal para crear una funcion

    Una funcion es un bloque del programa que esta definida fuera del main()

    4.2 CARACTERISTICAS DE LAS FUNCIONES

    Cuando queremos crearla hay que hacerla en dos partes: (ojo que esta el otro metodo)

    - Declararlas antes de main y despues de las llamadas al preprocesador ( DEFINE INCLUDE)

    - y despues del main la declaracion de las funciones

    La declaracion de una funcion : PROTOTIPO. Consiste en indicar un tipo (int,chart, float…) de valor de retorno. Cuando no devuelva nada hay que ponerle el tipo void, la funcion no devulve nada void=vacio.)

    tipo nombre( );

    tipo= int,float,char,double,void

    nombre= El que le damos nosotros, ponerle siempre uno significativo

    ( )= Lista de parametros separados por comas de las variables que recibe la funcion y sus tipos

    p.e. (int a,float x)

    dentro del main podemos llamar a la funcion

    definicion

    tipo nombre(lista de parametros)

    {

    codigo

    }

    Programa que con dos funciones una sume dos numeros y otra calcula su cuadaro y lo devuelve.

    #include <stdio.h>

    float sumar(float a, float b);

    float cuadrado(float b);

    main()

    {

    float x,y,suma,cx,cy;

    printf(“introduce x”);

    scanf(“%f”,&x);

    printf(“introduce y”);

    scanf(“%f”,&y);

    suma=suma(x,y);

    cx=cuadrado(x);

    cy=cuadrado(y);

    }

    float sumar (float a, floatb)

    {

    float suma;

    suma=a+b;

    return suma;

    }

    float cuadrado (float b)

    {

    float cuadradonum; //no se puede llamar a la variable igual que la funcion

    cuadradonum=b*b;

    return cuadradonum;

    }

    PASO DE ARRAYS A FUNCIONES

    tipo nombre(int v[], int m[][10]) //matrices primero vacio y el resto rellenos

    int v[10]

    int *v

    Las funciones no pueden devolver arraus

    Es de tipo simple

    4.3 PASO DE PARAMETROS A UNA FUNCION: PASO POR VALOR Y PASO POR REFERENCIA O DIRECCION

    Paso por valor consiste en pasar a la funcion una copia del valor del parametro o argumentos.

    La funcion trabaja con ese valor y cualquier cambio que se haga ene el valor del parametro desaparece al terminar la funcion.

    Los tipos simples int,float,char,doble se pasan por valor

    void funcion(int a)

    {

    printf(“%d”,a) ----10

    a=8;

    printf(“%d,a) --- 8

    }

    main()

    {

    int b=10: printf(“%d”,b);---10

    funcion(b);

    printf(“%d”,b); --10

    }

    Paso por referencia le pasamos la direccion memoria de la variable. Cualquier cambio en la funcion varia fuera.

    Se le pone un operador& direccion de memoria y * para el contenido de la memoria

    void funcion(int *a)

    {

    printf(“%d”,*a); 10

    *a=8; //posicion de memoria que se le asigna el valor 8

    printf(“%d”,*a); 8

    }

    main()

    {

    int b=10;

    printf(“%d”,b); 10

    funcion(&b);

    printf(“%d”,b); 8

    }

    Los arrays siempre se pasan por referencia

    float funcion(int v[])

    float funcion(int m[][20][15])

    4.4 AMBITO DE LAS VARIABLES

    Es el conjuntod e bloques de programa dentro de los cuales la variable esta declarada y por tanto puede utilizarse.

    main()

    {

    int a;

    a=a+10; //no da error poruq a esta declarada

    }

    void funcion(int a)

    {

    a=7; //a esta declarada ( dentro de funcion(int a)

    }

    void funcion (int x)

    {

    a=7; //ERROR el ambito de a es solo en la funcion

    }

    main()

    {

    int a;

    a=a+10;

    funcion(a);

    }

    void funcion (int x)

    {

    int a;

    printf(“%d”,a); //no muestra nada esta indeterminado

    }

    main()

    {

    int a;

    a=a+10;

    funcion(a);

    }

    Lo correcto seria

    void funcion(int x)

    {

    printf(“%d”,x);

    }

    main()

    {

    int a=3;

    a=a+10;

    funcion(a);

    }

    VARIABLE GLOBAL

    No utilizar en los programas, pero tenerla en cuenta para el test

    int a=8; //antes del main

    main()

    {

    a=a+10;

    funcion(a);

    }

    void funcion(int x)

    {

    printf(“%d”,a); //IMPRIMIRA 18

    }

    ojo que si dentro del main introducimos el valor a=5 cambiamos la variable

    4.5 LIBRERIAS DE FUNCIONES MAS COMUNES

    #include < >

    Nombre

    cabecera

    Traduccion

    Funciones

    Cometarios

    stdio.h

    standar in/out

    scanf()

    printf()

    conio.h

    console in/out

    getch()

    getche()

    highvideo()

    lowvideo()

    Igual que getch() pero muestra por pantalla el caracter

    ctype.h

    Tipo de dato

    isdigit()

    isalpha()

    isalnum()

    isupper()

    Devuelve 1 si el carácter es numero 0 si no lo es

    Devuelve si esl alfabetico

    Si esta en mayusculas

    string.h

    Cadenas de caracteres

    strlen()

    strcmp(s1,s2)

    Devuelve la longitud

    Compra si iguales=0 no iguales ¡= 0 confuso esta alreves

    bios.h

    Funciones para acceder a la bios

    time.h

    Funcion para acceder al tiempo del sistema

    locate.h

    Funciones tema geografica

    dos.h

    Funciones con sistema operativo

    math.h

    sin(x) asin(a)

    cos(x) acos(a)

    tan(x) atan(a)

    abs() valor absoluto entero

    fabs() valor absoluto real

    log10() logarimo neperiano

    log(10)

    SEPTIEMBRE 2001

    void MatrizMedia(float m1[][20], float m2[][20], float mmedia[][20], int nf, int nc)

    {

    int i,j

    for (i=0;i<nf;i++)

    for(j=0;j<nc;j++)

    mmedia[i][j]=(m1[i][j]+m2[i][j])/2;

    }

    #define MAXF 10

    #define MAXC 20

    void LeerMatriz(float m[][MAXC], int nf, int nc);

    void MostrarMatriz( float m[][MAXC], int nf, int nc);

    void MatrizMedia(float m1[][MAXC], float m2[][MAXC], float mmedia[][MAXC], int nf, int nc);

    main();

    {

    int nfilas, ncols;

    float matriz1[MAXF][MAXC],matriz2[MAXF][MAXC],matrizmedia[MAXF][MAXC];

    do

    {

    scanf(“%d”),&nfilas);

    }

    while(nfilas<2 || nfilas >MAXF);

    do

    {

    scanf(“%d”),&ncols);

    }

    while(ncols<2 || ncols>MAXC);

    LeerMatriz(matriz1, nfilas, ncols);

    LeerMatriz(matriz2,nfilas,ncols);

    MatrizMedia(matriz1,matriz2,matrizmedia,nfilas,ncols);

    MostrarMatriz(matrizmedia,nfilas,ncols);

    MostrarMatriz(matriz1,nfilas,ncols);

    MostrarMatriz(matriz2,nfilas,ncols);

    Void LeerMatriz (….)

    …..

    FEBRERO 2002

    Crear funcion que devuelva 1 si es capicua y 0 si no lo es

    a)

    int capicua(int n)

    {

    if ( n==invertir(n)

    return 1;

    else

    return 0; //no haria falta poner testo

    }

    int invertir (int n)

    {

    int nespejo=0

    while (n !=0)

    {

    nespejo=nespejo*10+n%10 ;

    n=n/10;

    }

    return nespejo;

    p.e.:

    1351 135

    nespejo =1

    135 13

    nespejo=1*10+5=15

    131

    nespejo=15*10+3=153

    1 0

    nespejo=153*10+1

    nespejo=1531

    b)

    #include <stdio.h)

    int capicua(int n);

    int invertir(int n) ;

    main()

    {

    int cont=0 ;i=0 ;

    while (cont<20)

    {

    if (capicua(i)==1)

    {

    cont++;

    printf(“.....%d”,i)

    }

    i++

    }

    }

    /* aqui estarian las funciones*/

    Si declaro al principio las funciones el orden no importa, el orden que estan escritas despues del main

    EJERCICIO

    Funcion que dado un vector devuelva la suma de todos sus elementos

    float sumarvector(float v[],int n)

    {

    float suma=0;

    int i;

    for(i=0;i<n;i++)

    suma=suma+v[i];

    return suma;

    }

    EXAMEN FEBRERO 2001 EJERCICIO 1

    A<=elem<=b

    float MediaEntreayb(float m[][3], int nf, int nc, float a, float b, int *numele)

    {

    int i,j,numele=0;

    float suma=0;media;

    *numele=0;

    for(i=0;i<nf;i++)

    for(j=0;j<nc;j++)

    if(m[i][j]>=a && m[i][j]<=b)

    {

    suma=suma+m[i][j];

    *numele++;

    }

    if(*nunele!=0)

    media=suma/*numele++

    else

    media=-1; //nunca devueve

    return media;

    }

    #include <stdio.h>

    float MediaEntreayb(float m[][3], int nf, int nc, float a, float b, int *numele);

    main()

    {

    float m[4][3]={ la del enunciado };

    float a,b,mediam;

    int nfilas,ncols=3;

    scanf().... introducir valores

    mediam= MediaEntreayb(m,nfilas,ncols,a,b,&nele);

    if (nele==-1)

    printf(“no hay”);

    else

    printf(“la media es %f”,mediam);

    }

    EJERCICIOS DE PRACTICAS

    1.-CALCULAR EL AREA DE UN TRIANGULO

    #include <stdio.h>

    main()

    {

    //declaracion de variables

    float base,altura,area;

    //entrada de datos

    printf("introduce la base:");

    scanf("%f",&base);

    printf("introduce la altura:");

    scanf("%f",&altura);

    //proceso de datos

    area=base*altura/2;

    //salida de datos

    printf("El area e: %f", area);

    //Esperamos para pulsar una tecla

    getch();

    }

    2.-CALCULAR EL AREA DE UN TRIANGULO

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //declaracion de variables

    float base,altura,area;

    //entrada de datos seguidos

    printf("Introduce la base y la altura:");

    scanf("%f%f",&base,&altura);

    //proceso de datos

    area=base*altura/2;

    //salida de datos

    printf("El area e: %f", area);

    //Esperamos a pulsar una tecla

    getch();

    }

    3.-CALCULAR EL AREA DE UN TRIANGULO

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //declaracion de variables

    float base,altura,area;

    //entrada de datos seguidos

    printf("Introduce la base y la altura:");

    scanf("%f%f",&base,&altura);

    //proceso de datos

    area=base*altura/2;

    //salida de datos

    printf("La base es %f y la altura es %f \n",base,altura);

    // \n significa salto de pagina en pantalla cada vez que se ponga parte el programa desde una linea nueva

    // tambien \n puedo ponerlo al principio del printf("\n ......), en cualquier posicion dentro de las comillas

    // del printf (nos pueden poner una pregunta de test para averiguar la salida correcta con el n\

    printf("Entonces el area resultante es: %f", area);

    //Esperamos a pulsar una tecla

    getch();

    }

    4.- AREA DE UN TRIANGULO

    #include <stdio.h>

    #include <conio.h>

    main()

    //int es una variable entera si introduzco 3.589 el solo guarda el valor 3

    //muy importante definir la variable, float es real y si nos piden en el enunciado que los valores

    //son enteros, no podemos poner una variable real.

    //a la hora de utilizar la variable no es %f sino %d de decimal o %i de integer

    {

    //declaracion de variables

    int base,altura;

    float area; //el area tenemos que ponerla con variable real, puesto que al hacer una division entre 2 puede

    //dar un resultado decimal

    //entrada de datos seguidos

    printf("Introduce la base y la altura:");

    scanf("%d%d",&base,&altura);

    //proceso de datos

    area=base*altura/2;

    //salida de datos

    printf("La base es %d y la altura es %d \n",base,altura);

    printf("Entonces el area resultante es: %f", area);

    //Esperamos a pulsar una tecla

    getch();

    }

    5.- PROGRAMA QUE LEA DOS NUMEROS ENTEROS QUE CALCULE SUMA,RESTA,PRODUCTO Y DIVISION

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    // declaración de las variables

    int a, b, suma, resta, producto;

    float division;

    //entrada de datos

    printf("Introduce el numero A: ");

    scanf("%d",&a);

    printf("Introduce el numero B: ");

    scanf("%d",&b);

    //Calculo de los datos

    suma=a+b;

    resta=a-b;

    producto=a*b;

    division=(float) a/b; //hay que tener en cuenta en c que el tipo de la variable para resultado

    //int/int => si los dos numerandos son int => que la division es entera el resultado va a ser int

    //int/int = int se queda solo con la parte entera del resultado

    //cono de finimos el valor float para division nos saldria el valor int.000000 y los ceros del float

    //si alguno fuera del tipo float la division seria real

    //La solución es forzar a que una operacion sea de un tipo determinado

    //division=(float) a/b => esto implica que la operacion va a ser del tipo real

    //Ojo si "a" o "b" fuese real ya no haria falta.

    //El compilador es el que elige int/int como el mayor es int => resultado int

    //Si temeos int/float => como el mayor es float => el resultado va a ser float

    //p.e. float division; si tenemos division=7/2; printf("%f", division)

    // que se muestra por pantalla??

    //El resultado va a 3.000000 puesto que 7 y 2 son int => que le forzamos a que la operacion

    //sea int

    //si fuese 7/2.0; => int/float => float el resultado seria 3.500000

    //Mostramos resultados

    printf("La suma de a+b es: %d\nLa resta de a-b es: %d\nEl producto de a*b es: %d\nLa division de a/b es: %f",suma,resta,producto,division);

    //Tambien podiamos haber puesto un printf independiente a cada resultado

    //esperamos a pulsar una tecla

    getch();

    }

    6.- PROGRAMA QUE LEA DOS NUMEROS ENTEROS QUE CALCULE SUMA,RESTA,PRODUCTO Y DIVISION

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    // declaración de las variables

    int a, b, suma, resta, producto, resto;

    float division;

    //entrada de datos

    printf("Introduce el numero A: ");

    scanf("%d",&a);

    printf("Introduce el numero B: ");

    scanf("%d",&b);

    //Calculo de los datos

    suma=a+b;

    resta=a-b;

    producto=a*b;

    division=(float) a/b;

    resto=a%b;

    //Otro operador es % resto=a%b; las variables siempre tienen que se variable int

    //calcula lo que sobra de dividir un numero a otro

    //2%7=2

    //7%2=1

    //8%2=0

    //Mostramos resultados

    printf("La suma de a+b es: %d\nLa resta de a-b es: %d\nEl producto de a*b es: %d\nLa division de a/b es: %f",suma,resta,producto,division);

    printf("\n El resto de a/b es: %d",resto);

    //esperamos a pulsar una tecla

    getch();

    }

    7.-PROGRAMA QUE LEA DOS NUMEROS ENTEROS QUE CALCULE SUMA,RESTA,PRODUCTO Y DIVISION

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    // declaración de las variables

    float a, b, suma, resta, producto, division;

    int resto;

    //entrada de datos

    printf("Introduce el numero A: ");

    scanf("%f",&a);

    printf("Introduce el numero B: ");

    scanf("%f",&b);

    //Calculo de los datos

    suma=a+b;

    resta=a-b;

    producto=a*b;

    division= a/b;

    resto=(int)a%(int)b;

    // en este caso con dos variables float las convertimos al tipo int

    // necesario para hacer la operacion %

    // int%int=int

    //Mostramos resultados

    printf("La suma de a+b es: %f", suma);

    printf("\n La resta de a-b es: %f", resta);

    printf("\n El producto de a*b es: %f", producto);

    printf("\n La division de a/b es: %f",division);

    printf("\n El resto de a/b es: %d",resto);

    //esperamos a pulsar una tecla

    getch();

    }

    8.- OPERACIONES COMPLEJAS

    //Queremos hacer una raiz cuadrada

    //la libreria math.h

    //de esta liberia las que mas nos interesan son:

    //int abs(int x); calcula el valor anbsoluto de un numero entero

    //abs es el nombre de la funcion

    //lo que va entre () es la lista de variables que necesita la funcion para hacer algo

    //en este caso estoy utilizando una variable de tipo entero la x es el nombre de la variable

    //el int del principio es de que forma devuelve el resultado.

    //"double fabs (double x)" calcula el valor absoluto de un numero real doble es un real con mas precision

    //"double cos (double x)"

    //"double sin (double x)"

    //"double tan (double x)"

    //"double acos (double x)"

    //"double asin (double x)"

    //"double atan (double x)"

    //ojo el angulo es en radianes pi=3,1416 => rad=180 grados

    //"double sqrt (double x)" es la raiz cuadrada

    //"double pow (double x,y )" tenemos dos paramentros, calcula x elevado a y

    //"double cosh (double x)" funciones hiperbolicas

    //"double sinh (double x)"

    //"double tanh (double x)"

    //"double log (double x)"

    //"double log10 (double x)" logaritmo neperiano

    //"double exp (double x)" e elevado a x

    //sacar la raiz cuadrada de a y b

    //logaritmos

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    #include <math.h> //sqrt()

    main()

    {

    // declaración de las variables

    float a, b, raiza, raizb, log_a, log_b, log10_a, log10_b;

    //entrada de datos

    printf("Introduce un numero A: ");

    scanf("%f",&a);

    printf("Introduce un numero B: ");

    scanf("%f",&b);

    //Calculo de los datos

    raiza = sqrt(a);

    raizb = sqrt(b);

    log_a = log(a);

    log_b = log(b);

    log10_a = log10(a);

    log10_b = log10(b);

    //Mostramos resultados

    printf("La raiz cuadrada de a=%f es: %f\n", a, raiza);

    printf("La raiz cuadrada de b=%f es: %f\n", b, raizb);

    printf("El logartimo de a=%f es: %f\n", a, log_a);

    printf("El logartimo de b=%f es: %f\n", b, log_b);

    printf("El logartimo neperiano de a=%f es: %f\n", a, log10_a);

    printf("El logartimo neperiano de b=%f es: %f\n", b, log10_b);

    //esperamos a pulsar una tecla

    getch();

    }

    9.- SENTENCIAS DE CONTROL DE FLUJO QUE NOS PERMITE VEN POR DONDE QUEREMOS QUE

    EJECUTE EL PROGRAMA.

    La sentencia if es un si (condicional)

    sentencia1; hace sentencia1 si no se cumple la

    sentencia1 no se hace

    if (<condicion> ) <sentencia>;

    if (a>=1) logaritmo= log(a);

    Los condicionantes o comparadores

    a >= b a mayor o igual que b

    > mayor

    < menor

    = igual

    == sirve para ver si la parte izquierda y la derecha son exactamente iguales

    pero para dos expresiones

    != distinto

    if (a!=b) ....;

    ahora quiero hacer esto

    a != 10

    b > 10

    if (a!=10 && b>10) ...; como pongo el

    AND=&&

    OR=||

    NOT=!

    p.e. la negacion tiene que ir entre parentesis

    if (!(a!=10 && b>10)) ....;

    10.- EJERCICIO DADA UNA VARIABLE MUESTRE SU VALOR ABSOLUTO SIN UTILIZAR LA

    //funcion abs

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    main()

    {

    // declaración de las variables

    float a,resultado;

    //entrada de datos

    printf("Introduce un numero A: ");

    scanf("%f",&a);

    //Calculo de Datos

    resultado=a;

    if (a<0) resultado=-a;

    //Mostramos resultados

    printf("El valor absoluto de A=%f es: %f\n", a, resultado);

    //esperamos a pulsar una tecla

    getch();

    }

    11.- ECUACION DE SEGUNDO GRADO

    //Repaso IF

    //if (condicion)

    // S1;

    // else S2;

    // !(num<0 || num>0)

    // !(num<0) && !(num>30)

    // num>=0 && num <=30

    //programa para resolver la ecuación de segundo grado

    //Tener en cuenta b^2-4ac>0

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    #include <math.h>

    main()

    {

    //definicion de variables

    float a,b,c,par1, resultado1, resultado2;

    //introduccion de datos

    printf("Calcular las raizes de la ecuacion ax^2+bx+c=0 \n");

    printf("Introduce ahora las ctes, a, b y c \n");

    printf("Valor de a: " );

    scanf("%f", &a);

    printf("\nValor de b: " );

    scanf("%f", &b);

    printf("\nValor de c: ");

    scanf("%f", &c);

    //definimos limitaciones

    //a!0

    //(b^2-4*ac)>0

    par1=pow(b,2)-a*c*4;

    if (a==0)

    {

    if (b!=0)

    {

    resultado1=-c/b;

    //mostramos resultado cuando a=0 solo seria una raiz

    printf("\nEl resultado seria una unica raiz de valor %f:", resultado1);

    }

    else

    //

    printf("\nNo seria una ecuacion pues %f=!0",c);

    }

    else

    if (par1<0)

    printf("\nNo se puede resolver la ecuacion");

    else

    {

    //calculamos operaciones

    resultado1=((-b)+sqrt(par1))/(2*a);

    resultado2=((-b)-sqrt(par1))/(2*a);

    if (resultado1==resultado2)

    //mostramos resultado

    printf("\nLas dos raizes R1 y R2 son igulales y su valor es: %f", resultado1);

    else

    {

    printf("\nLa raiz R1=%f",resultado1);

    printf("\nLa raiz R2=%f",resultado2);

    }

    }

    getch();

    }

    12.- PROGRAMA QUE DIGA SI PUEDES VOTAR O NO

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int edad, te_quedan, desde;

    printf("dime tu edad: "); scanf("%d",&edad);

    if (edad == 18)

    printf("ya puedes votar desde ya");

    else

    if (edad >18)

    {

    printf("ya puedes votar");

    desde=edad-18;

    printf("\nDesde hace %d años", desde);

    }

    else

    {

    //ojo que hay que poner el corchete dentro del if por que si no

    //solo cojeria el printf e la primera linea y el resto lo ejecutaria

    //siempre

    printf("aun no puedes votar");

    te_quedan=18-edad;

    printf("\nAun te faltan %d años", te_quedan);

    //esto lo podria acortar con otra sentencia

    //printf("Aun no puedo votar \n te faltan %d años", 18-edad);

    }

    getch();

    }

    13.- PIDA DOS NºENTEROS Y LOS ENVIA A PANTALLA PRIMERO EL MAYOR Y LUEGO EL OTRO

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    main()

    {

    //definicion de variables

    int a,b;

    //introduccion de datos

    printf("Valor de a: " );

    scanf("%d", &a);

    printf("\nValor de b: " );

    scanf("%d", &b);

    //Comparacion y salida

    if (a==b)

    printf("Valor de a es igual que b");

    else

    {

    if (b<a)

    printf("Ordenados de mayor a menor a=%d,b=%d",a,b);

    else

    printf("Ordenados de mayor a menor b=%d,a=%d",b,a);

    }

    getch();

    }

    14.- PIDA 3 NºENTEROS Y LOS ENVIA A PANTALLA PRIMERO EL MAYOR Y LUEGO EL OTRO

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    main()

    {

    //definicion de variables

    int a,b,c;

    //introduccion de datos

    printf("Valor de a: " );

    scanf("%d", &a);

    printf("\nValor de b: " );

    scanf("%d", &b);

    printf("\nValor de b: " );

    scanf("%d", &c);

    //a>b si ? b>c si abc

    //a>b si ? b>c no => a>c => bac

    //a>b si ? b>c no => a>c => cab

    //a>b no ? a>c si => bac

    //a>b no ? a>c no => b>c no => cba

    //a>b no ? a>c no => b>c si => bca

    if (a>b) //a>b

    {

    if (b>c)//b>a

    {

    printf("Ordenados de mayor a menor %d,%d,%d",a,b,c); //a>b>c

    }

    else //b>a

    {

    if (a>c)//a>c

    {

    printf("Ordenados de mayor a menor %d,%d,%d",b,a,c); //b>a>c

    }

    else //a<c

    {

    printf("Ordenados de mayor a menor %d,%d,%d",c,a,b); //c>a>b

    }

    } //fin else b>a

    } //fin if a>b

    else //a<b

    {

    if (a>c) //a>c

    {

    printf("Ordenados de mayor a menor %d,%d,%d",b,a,c); //b>a>c

    }

    else //a<c

    {

    if (b>c) //b>c

    {

    printf("Ordenados de mayor a menor %d,%d,%d",b,c,a); //b>c>a

    }

    else //b>c

    {

    printf("Ordenados de mayor a menor %d,%d,%d",c,b,a); //c>b>a

    }

    } //fin else a<c

    } // fin else a<b

    getch();

    }

    15 HACER UN PROGRAMA C QUE PIDA UN CARACTER POR TECLADO Y QUEENVIE MENSAJE A PANTALLA INDICANDO SI ES UN DIGITO, UNA LETRA MAYUSCULA O UNA LETRA MINUSCULA

    //Char solo puede guardar UN unico caracter 0..9 A..Z a..z

    //lo que guarda es el digito 0 al 9

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    main()

    {

    //definicion de variables

    char caracter;

    //introduccion de datos

    printf("Introduce un caracter: ");

    scanf("%c",&caracter);

    // 0 9 A Z a z

    //si <=9 >=0 digito

    //si <=Z >=A mayuscula

    //si <=z >=a minuscula

    if (caracter<='9'&& caracter >= '0')

    {

    printf("Tenemos un DIGITO");

    }

    else

    {

    if(caracter<='Z'&& caracter >='A')

    {

    printf("Tenemos una MAYUSCULA");

    }

    else

    {

    if(caracter<='z'&& caracter >='a')

    printf("Tenemos una MINUSCULA");

    else

    printf("Tenemos otra COSA");

    }

    }

    getch();

    }

    15 DE OTRA FORMA

    //Char solo puede guardar UN unico caracter 0..9 A..Z a..z

    //lo que guarda es el digito 0 al 9

    //Hacer un programa c que pida un caracter por teclado y que

    //envie mensaje a pantalla indicando si es un digito, una letra mayuscula

    //o una letra minuscula

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    main()

    {

    //definicion de variables

    char caracter;

    //introduccion de datos

    printf("Introduce un caracter: ");

    scanf("%c",&caracter);

    // 0.....9 A.......Z a......z

    //si <=9 >=0 digito

    //si <=Z >=A mayuscula

    //si <=z >=a minuscula

    if (caracter<='9'&& caracter >= '0')

    {

    printf("Tenemos un DIGITO");

    }

    if (caracter<='Z'&& caracter >='A')

    {

    printf("Tenemos una MAYUSCULA");

    }

    if (caracter<='z'&& caracter >='a')

    {

    printf("Tenemos una MINUSCULA");

    }

    if (!(caracter<='9'&& caracter >= '0')||

    (caracter<='Z'&& caracter >='A')||

    (caracter<='z'&& caracter >='a'))

    {

    printf("Tenemos otra COSA");

    }

    getch();

    }

    16 ESCRIBIR PROGRAMA EN C QUE PIDA UN NUMERO ENTERO Y ENVIE UN MENSAJE A PANTALLA INDICANDO SI EL NUMERO ES PAR O IMPAR

    #include <stdio.h> //printf(), scanf()

    #include <conio.h> //getch()

    main()

    {

    //variables

    int a,b,resto;

    b=2;

    //Entrada datos

    printf("Introduce numero ");

    scanf("%d",&a);

    //Buscamos saber si es par o impar

    resto=a%b; //2/2 resto 0 4/2 resto 0 3/2 resto 1 5/2 resto 1

    if (resto==0)

    printf("El numero es par");

    else

    printf("El numero es impar");

    getch();

    }

    18 CALCULADORA

    //switch(expresion)

    //{

    //case cte1: break; salta de caso case teene que ser una constante 18, 70.3

    //case cte2: break; si no lo ponemos siguie por el siguiente caso

    //.

    //.

    //case cten:

    //default; si no es ninguno de esos casos que haga lo que biene en default

    //}

    // hacer una calculadora

    //opcion 1.-suma 2. resta 3 producto 4 division

    //

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    // declaración de las variables

    int opcion;

    float a,b,resultado;

    //entrada de datos

    printf("CALCULADORA \n");

    printf("pulsa 1.- para SUMAR \n");

    printf("pulsa 2.- para RESTAR \n");

    printf("pulsa 3.- para MULTIPLICAR \n");

    printf("pulsa 4.- para DIVIDIR \n");

    scanf("%d",&opcion);

    printf("\nIntroduce el numero A: ");

    scanf("%f",&a);

    printf("\nIntroduce el numero B: ");

    scanf("%f",&b);

    //Calculo de los datos mediante switch

    switch(opcion)

    {

    case 1:

    resultado=a+b;

    printf("\nEl resultado de la suma es %f",resultado);

    break;

    case 2:

    resultado=a-b;

    printf("\nEl resultado de la resta es %f",resultado);

    break;

    case 3:

    resultado=a*b;

    printf("\nEl resultado de la multiplicacion es %f",resultado);

    break;

    case 4:

    resultado=a/b; //no hace falta (float)a/b porque ya son float

    printf("\nEl resultado de la divisionn es %f",resultado);

    break;

    default:

    printf("\nHa introducido una opcion no valida");

    }

    getch();

    }

    19 EJERCICIO CONTAR HASTA 100 CON CADA UNO DE ESTOS ESQUEMAS EMPEZAR EN EL 1..100 O DEL 0 AL 100

    //while ()

    //{

    //sentencia a;

    //sentencia b;

    //}

    //como minimo se ejecuta 0 veces y como maximo infinitas veces

    //do

    //{

    //sentencia 1;

    //sentencia 2;

    //}

    //while(exp)

    //como minio se ejecuta 1 vez y como maximo infinitas veces

    //for (inalizacion;expresion;actualizacion)

    //{

    //sentencia 1;

    //sentencia 2;

    //}

    //ejercicio contar hasta 100 con cada uno de estos esquemas

    //empezar en el 1..100 o del 0 al 100

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //definimos variables

    int opcion, a=1;

    do

    {

    printf("pulsa 1.- para usar while\n");

    printf("pulsa 2.- para usar do..while\n");

    printf("pulsa 3.- para usar for\n");

    scanf("%d",&opcion);

    }

    while( opcion!=1 && opcion!=2 && opcion!=3);

    //Calculo de los datos mediante switch

    //printf("%d\t",a); \t muestra los datos tabulados

    switch(opcion)

    {

    case 1:

    //Con while

    while(a<=100)

    {

    printf("%d\t",a);

    a++;

    }

    break;

    case 2:

    //en este caso no hace falta inicializar la varible pues al ir directamente con el case ya tiene el valor

    //definido arriba.

    //con do..while

    do

    {

    printf("%d\t",a);

    a++;

    }

    while(a<=100);

    break;

    case 3:

    //no hace falta inicializar a en este caso pues viene del valor arriba definido

    //con for

    for (a; a<=100; a++)

    //no hace falta poner {} pues solo tenemos una linea

    printf("%d\t",a);

    break;

    }

    getch();

    }

    20 CONTAR HASTA LOS 100 PRIMEROS NÚMEROS PARES UTILIZANDO UNO DE LOS BUCLES

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //definimos variables

    int a=0,b=0;

    //utilizando el while

    while(b<100)

    {

    if (a%2==0)

    {

    b++;

    printf("%d %d \n ",a,b);

    }

    a++;

    }

    printf("\n\n");

    // utilizando el do..while

    a=0,b=0;

    do

    {

    if (a%2==0)

    {

    b++;

    printf("%d %d \n ",a,b);

    }

    a++;

    }

    while(b<100);

    //con for

    printf("\n\n");

    for (a=0,b=0;b<100;a++)

    {

    if (a%2==0)

    {

    b++;

    printf("%d %d \n ",a,b);

    }

    a++;

    }

    getch();

    }

    21 PEDIR DOS NUMEROS ENTEREOS POR TECLADO NºDE INICIO Y Nº DE FIN COMPROBAR QUE EL INICIO SEA MENOR QUE EL FIN

    SI INICIO>FIN VOLVER A PEDIRLO Y MOSTRAR LOS NUMEROS ENTRE ELLOS DOS

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    //definimos variables

    int inicio,fin,contador;

    do

    {

    printf("Introduce el valor inicio y fin");

    scanf("%d %d",&inicio,&fin);

    }

    while(inicio>=fin);

    for (contador=inicio; contador<=fin; contador++)

    printf("%d\t",contador);

    getch();

    }

    22 DADO UN N POR TECLADO SUMAR SUS CIFRAS Y MOSTRAR POR PANTALLA LA SUMA Y EL NUMERO QUE PEDIMOS

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int n,aux,suma=0;

    printf("introduce un numero n:");

    scanf("%d",&n);

    aux=n;

    while(aux!=0)

    {

    suma=suma+aux%10; //aux%10 coge la varible mas a la derecha

    aux=aux/10;

    }

    printf("El numero %d sus cifras suman %d",n,suma);

    getch();

    }

    23 ESCRIBIR UNA PROGRAMA EN C QUE APARTIR DE UN NUMERO ENTERO LEIDO POR TECLADO CALCULE Y MUESTRE LA SUMA DE LA MAYOR DE SUS CIFRAS CON LA MENOR DE SUS CIFRAS

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int n,aux,resto,suma=0,mayor=0,menor=9;

    printf("introduce un numero n:");

    scanf("%d",&n);

    resto=n;

    aux=n;

    while(aux!=0)

    {

    resto=aux%10;

    if (resto>mayor)

    mayor=resto;

    if (resto<menor)

    menor=resto;

    aux=aux/10;

    }

    suma=mayor+menor;

    printf("El numero %d sus cifras suman %d",n,suma);

    getch();

    }

    //pedir a parte del numero un digito entre 1..9

    //otra varible d extricta

    //si la suma es divisible por n

    24 ESCRIBIR UNA PROGRAMA EN C QUE APARTIR DE UN NUMERO ENTERO LEIDO POR TECLADO CALCULE Y MUESTRE LA SUMA DE LA MAYOR DE SUS CIFRAS CON LA MENOR DE SUS CIFRAS PEDIR A PARTE DEL NUMERO UN DIGITO ENTRE 1..9 OTRA VARIBLE D EXTRICTA SI LA SUMA ES DIVISIBLE POR N

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int n,d,aux,resto,suma=0,mayor=0,menor=9;

    printf("introduce un numero n:\n");

    scanf("%d",&n);

    do

    printf("introduce una cifra de 1 a 9:);

    scanf("%d",&d);

    while(d<1 || d>9);

    resto=n;

    aux=n;

    while(aux!=0)

    {

    resto=aux%10;

    if (resto>mayor)

    mayor=resto;

    if (resto<menor)

    menor=resto;

    aux=aux/10;

    }

    suma=mayor+menor;

    printf("El numero %d sus cifras suman %d",n,suma);

    //conprobar si es suma divisible por n

    if (suma%d==0)

    printf("La suma es divisible");

    else

    printf("La suma es no esdivisible");

    getch();

    }

    25 PEDIR UN NUMERO N POR TECLADO MAYOR QUE 0 QUE MUESTRE POR PANTALLA

    1

    1 2

    1 2 3

    ...

    1 2 3 4.....N

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int n,i,m=1;

    //limitar dato

    do {

    printf("introduce un numero mayor que 0:");

    scanf("%d",&n);

    }

    while ( n<=0 );

    //calculos

    for(m;m<=n;m++)

    {

    for(i=1;i<=m;i++)

    printf("%d\t",i);

    printf("\n");

    }

    getch();

    }

    27 ESCRIBIR UNA PROGRAMA EN C QUE APARTIR DE UN NUMERO ENTERO LEIDO POR TECLADO CALCULE Y MUESTRE LA SUMA DE LA MAYOR DE SUS CIFRAS CON LA MENOR DE SUS CIFRAS PEDIR A PARTE DEL NUMERO UN DIGITO ENTRE 1..9 /OTRA VARIBLE D EXTRICTA /SI LA SUMA ES DIVISIBLE POR N

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int n,i,d,contador,aux,resto,suma=0,mayor,menor;

    printf("introduce cuantos numeros quieres calcular:\n");

    scanf("%d",&n);

    do

    {

    printf("introduce una cifra de 1 a 9:");

    scanf("%d",&d);

    }

    while (d<1 || d>9);

    //inicializar variables para el bucle exterior

    contador=0;

    i=0;

    while (contador<n)

    {

    //inicializamos las variables del bucle anterior

    aux=i;

    mayor=0;

    menor=9;

    while(aux!=0)

    {

    resto=aux%10;

    if (resto>mayor)

    mayor=resto;

    if (resto<menor)

    menor=resto;

    aux=aux/10;

    }

    if ((mayor+menor)%d==0)

    {

    contador++;

    printf("%d: Encontrado el %d divisible por %d\n",contador,i,d);

    }

    i++;

    }

    getch();

    }

    28 COMPLETAR EL EJERCICIO DE LA CALCULADORA Y PREGUNTAR SI SE QUIERE REPETIR

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    // declaración de las variables

    int opcion;

    float a,b,resultado;

    char repetir;

    //entrada de datos

    repetir = 's';

    do

    {

    //inicio calculadora

    printf("CALCULADORA \n");

    printf("pulsa 1.- para SUMAR \n");

    printf("pulsa 2.- para RESTAR \n");

    printf("pulsa 3.- para MULTIPLICAR \n");

    printf("pulsa 4.- para DIVIDIR \n");

    scanf("%d",&opcion);

    printf("\nIntroduce el numero A: ");

    scanf("%f",&a);

    printf("\nIntroduce el numero B: ");

    scanf("%f",&b);

    //Calculo de los datos mediante switch

    switch(opcion)

    {

    case 1:

    resultado=a+b;

    printf("\nEl resultado de la suma es %f",resultado);

    break;

    case 2:

    resultado=a-b;

    printf("\nEl resultado de la resta es %f",resultado);

    break;

    case 3:

    resultado=a*b;

    printf("\nEl resultado de la multiplicacion es %f",resultado);

    break;

    case 4:

    resultado=a/b; //no hace falta (float)a/b porque ya son float

    printf("\nEl resultado de la divisionn es %f",resultado);

    break;

    default:

    printf("\nHa introducido una opcion no valida");

    }

    flushall();

    printf("\nQuiere repetir? (s/n)");

    scanf("%c",&repetir);

    }

    while(repetir=='s' || repetir=='S');

    //pero tenemos un problema con el buffer de entrada puesto que guarda los datos ordenados

    // de manera que lo hemos introducido en el teclado

    //Como el buffer no esta vacio no se puede

    //podemos solucionarlo borrando el buffer antes de leer caracterer

    //flushall(); <stdio.h>

    //tambien podriamos hacer antes otro scanf(" ") antes y ya leeria el salto de linea anterior

    //si hubiese varios saltos de linea abria que hace un bucle while""

    getch();

    }

    30 PROGRAMA QUE TENGA UNA FUNCION QUE LEA UNA MATRIZ UNA FUNCION QUE MUESTRE UNA MATRIZ

    UNA FUNCION QUE DADAS DOS MATRIZCES CALCULA Y DEVUELVA LA MATRIZ SUMA*/

    /*

    maximo 10x20

    leerMatriz ( m,filas,cols); leer reales

    void leerMatriz ( float m[][20],int filas,int cols );

    nos tiene que leer la matriz guarde los valores y devuelva

    la matriz devuelve

    una funcion nunca nos devuelve arrays hay que poner void por que se pasa por

    referencia guardan el valor cuando se termina la funcion.

    filas cols se pasan por valor desaparecen al terminar de ejecutarse

    void MostrarMatriz (float m[][20],int filas, int cols);

    void SumarMatrices (float m1[][20],float m2[][20],int filas,int cols,msuma[][20]);

    main()

    leer

    */

    /* nºfilas nºcolumnas m1 m2 calcule suma muestre m1 m2 msuma*/

    #include <stdio.h>

    #include <conio.h>

    void leerMatriz ( float m[][20],int filas,int cols )

    {

    int i,j;

    //introducimos los datos de la matriz

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    {

    printf(" [%d][%d]= ",i,j);

    scanf("%f",&m[i][j]);

    }

    }

    //funcion para mostrar matrices

    void mostrarMatriz ( float m[][20],int filas,int cols )

    {

    int i,j;

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    {

    printf("%f\t ",m[i][j]);

    if (j==cols-1)

    printf("\n");

    }

    }

    //funcion para sumar dos matrices

    void sumarMatrices (float m1[][20],float m2[][20],int filas,int cols,float msuma[][20])

    {

    int i,j;

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    msuma[i][j]=m1[i][j]+m2[i][j];

    }

    //programa principal

    main()

    {

    float m1[10][20],m2[10][20],msuma[10][20];

    int filas, cols;

    //entrada de datos

    do

    {

    printf("Introduce el numero de filas: ");

    scanf("%d",&filas);

    }

    while(filas<2 || filas >10);

    do

    {

    printf("Introduce el numero de columnas: ");

    scanf("%d",&cols);

    }

    while(cols<2 || cols >20);

    //salida datos

    printf("Introduce los datos de la matriz 1 \n");

    leerMatriz(m1,filas,cols);

    printf("Introduce los datos de la matriz 2 \n");

    leerMatriz(m2,filas,cols);

    printf("M1\n");

    sumarMatrices(m1,m2,filas,cols,msuma);

    mostrarMatriz(m1,filas,cols);

    printf("\n");

    printf("M2\n");

    mostrarMatriz(m2,filas,cols);

    printf("\n");

    printf("suma M1+M2\n");

    mostrarMatriz(msuma,filas,cols);

    getch();

    }

    31 PROGRAMA PARA INVERTIR UN VECTOR

    #include <stdio.h>

    #include <conio.h>

    main()

    {

    int max,i,j;

    float vector[99],ivector[99];

    do

    {

    printf("Introduce el tamaño del vector entre 2 y 99: ");

    scanf("%d",&max);

    }

    while( max<2 || max>99);

    printf("\nIntroduce los datos del vector :\n");

    //lectura de datos del vector

    j=max;

    for(i=1;i<=max ;i++)

    {

    printf(" [%d]= ",i);

    scanf("%f",&vector[i]);

    ivector[j]=vector[i];//vamos inviertiendo el vector

    j--;

    }

    //mostrar vector introducido

    printf("El vector original es:\n");

    for(i=1;i<=max ;i++)

    printf(" [%f] ",vector[i]);

    //mostrar por pantalla el inverso

    printf("\nEl vector invertido es:\n");

    for(i=1;i<=max ;i++)

    printf(" [%f] ",ivector[i]);

    getch();

    }

    32 FUNCION TRANSPUESTA DE UNA MATRIZ

    /*a00 a01 a02 a00 a10 a20

    a10 a11 a12 traspuesta a01 a11 a21

    a20 a21 a22 a02 a12 a22

    primero

    //defirnir una funcion

    //#define nf 10

    //#define nc 10

    //void calcular transpuesta (int m[][NC], int MT[][]ç

    //despiuesst mostra matriz original y matriz transpiuesta

    matriz transpuesta

    //la segunda parte

    crear funcion

    */

    #define NF 10

    #define NC 10

    #include <stdio.h>

    #include <conio.h>

    //funcion leer matriz

    void leerMatriz ( float m[][NC],int filas,int cols )

    {

    int i,j;

    //introducimos los datos de la matriz

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    {

    printf(" [%d][%d]= ",i,j);

    scanf("%f",&m[i][j]);

    }

    }

    //funcion mostramatriz

    void mostrarMatriz ( float m[][NC],int filas,int cols )

    {

    int i,j;

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    {

    printf("%f\t ",m[i][j]);

    if (j==cols-1)

    printf("\n");

    }

    }

    //funcion para hacer transpuesta

    void transMatriz (float m1[][NC],int filas,int cols,float mtras[][NC])

    {

    int i,j;

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    mtras[j][i]=m1[i][j];

    }

    //funcion para que transpuesta tenga salida en la misma

    //sin definir una matriz auxiliar

    //ojo como ver si una matriz es simetrica podiamos sacarlo de esta forma

    //estamos recorriendo la parte diagonal superior

    //solo que

    void tMatriz (float m1[][NC],int filas,int cols)

    {

    int i,j;

    float aux;

    for(i=0;i<filas-1;i++)

    for(j=i+1;j<cols;j++)

    {

    aux=m1[i][j];

    m1[i][j]=m1[j][i];

    m1[j][i]=aux;

    }

    }

    //programa principal

    main()

    {

    float m1[NF][NC],mtras[NC][NC];

    int filas, cols;

    //entrada de datos

    do

    {

    printf("Introduce el numero de filas: ");

    scanf("%d",&filas);

    }

    while(filas<1 || filas >NF);

    do

    {

    printf("Introduce el numero de columnas: ");

    scanf("%d",&cols);

    }

    while(cols<1 || cols >NC);

    //salida datos

    printf("Introduce los datos de la matriz 1 \n");

    leerMatriz(m1,filas,cols);

    printf("Matriz 1:\n");

    transMatriz(m1,filas,cols,mtras);

    mostrarMatriz(m1,filas,cols);

    printf("\n");

    printf("Su traspuesta:\n");

    mostrarMatriz(mtras,cols,filas);

    printf("\n");

    printf("Su misma traspuesta:\n");

    tMatriz(m1,filas,cols);

    mostrarMatriz(m1,filas,cols);

    getch();

    }

    ESCBIR UN PROGRAMA QUE TENGA DOS FUNCIONES, 0º UNA FUNCION QUE LEA POR TECLADO

    1º ES UNA FUNCION QUE DADO UN VECTOR DEVUELVA EL VECTOR AL REVES 2º DADO UN VECTOR DEVUELVA EL MINIMO

    MOSTRAR EN EL MAIN EL VECTOR ALREVES Y EL MINIMO MOSTRARLO TAMBIEN

    #define TVECTOR 10

    #include <stdio.h>

    #include <conio.h>

    void LeerVector(float v[],int tv)

    {

    int i;

    printf("\nIntroduce los datos del vector :\n");

    //lectura de datos del vector

    for(i=0;i<tv ;i++)

    {

    printf(" [%d]= ",i);

    scanf("%f",&v[i]);

    }

    }

    //inversor

    void Inversor(float v[],float iv[],int tv)

    {

    int i,j;

    //operacion de inverir

    j=tv-1;

    for(i=0;i<tv ;i++)

    {

    iv[j]=v[i];//vamos inviertiendo el vector

    j--;

    }

    }

    //comparador

    float Comparador(float v[], int tv)

    {

    int i;

    float aux;

    aux=v[0];

    //operacion de memorizar

    for(i=0;i<tv ;i++)

    {

    if (v[i]<aux)

    aux=v[i];

    }

    return aux;

    }

    //funcion mostrar por pantalla

    void MostrarVector(float v[],int tv)

    {

    int i;

    for(i=0;i<tv ;i++)

    printf(" [%f] ",v[i]);

    }

    main()

    {

    int i,n;

    float vector[TVECTOR],ivector[TVECTOR],aux;

    do

    {

    printf("Introduce el tamaño del vector: ");

    scanf("%d",&n);

    }

    while(n<2 || n>10);

    printf("\n");

    LeerVector(vector,n);

    MostrarVector(vector,n);

    printf("\n");

    Inversor(vector,ivector,n);

    printf("\nEl vector invertido es:\n");

    for(i=0;i<n ;i++)

    printf(" [%f] ",ivector[i]);

    printf("\n");

    aux=Comparador(vector,n);

    printf("El minimo valor es [%f]",aux);

    getch();

    }

    programa que lea vector con una funcion, funcion que devuelva la suma de numeros primos de v int

    funcion que dado un numero diga si es primo 1 si no 0, el programa principal muestra la sumasi es primo

    #define NF 10

    #define NC 10

    #define NV 100

    #include <stdio.h>

    #include <conio.h>

    void LeerMatriz ( float m[][NC],int filas,int cols )

    {

    int i,j;

    //introducimos los datos de la matriz

    for(i=0;i<filas;i++)

    for(j=0;j<cols;j++)

    {

    printf(" [%d][%d]= ",i,j);

    scanf("%d",&m[i][j]);

    }

    }

    //comprueva si es primo

    int EsPrimo(int num)

    {

    int esprimo=1,divisor;

    for(divisor=2;divisor<num;divisor++)

    {

    if(num%divisor==0)

    esprimo=0;

    }

    return esprimo;

    }

    //fincon suma primso

    int SumaPrimos(int m[][NC], int filas, int cols, int v[NV] )

    {

    int i,j,sumaprimos=0,cont=0;

    for(i=0;i<filas ;i++)

    for(j=0;j<cols;j++)

    {

    if (EsPrimo(m[i][j])==1)

    {

    printf("\nEste es un numero primo: %d ",m[i][j]);

    sumaprimos=sumaprimos+m[i][j];

    v[cont]=m[i][j];

    cont++;

    }

    }

    printf("\el vector i\n");

    for(i=0;i<cont;i++)

    printf(" %d, ",v[i]);

    printf("\n");

    return sumaprimos;

    }

    //main

    main()

    {

    float matriz[NF][NC];

    int filas, cols, totalprimos,vector[NV];

    //entrada de datos

    do

    {

    printf("Introduce el numero de filas: ");

    scanf("%d",&filas);

    }

    while(filas<1 || filas >NF);

    do

    {

    printf("Introduce el numero de columnas: ");

    scanf("%d",&cols);

    }

    while(cols<1 || cols >NC);

    LeerMatriz(matriz,filas,cols);

    totalprimos = SumaPrimos(matriz,filas,cols,vector);

    printf("\nla suma de todos los numeros primos es: %d",totalprimos);

    getch();

    }