Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C] Esercizi su acquisizione vettore di numeri e Bubble Sort

    Mi aiutate a risolvere questi due esercizi? Grazie!

    1) Algoritmo Bubble Sort su un array di "n" stringhe dove "n" dev'essere richiesto da tastiera.


    2) Scrivere un programma C che richieda all'utente, in ordine crescente, l'inserimento di una serie di numeri interi (AL MASSIMO 20), salvandoli nel vettore di nome numeri.


    L'acquisizione termina dopo l'inserimento del ventesimo numero, o dopo che l'utente abbia inserito un numero non ordinato (questo numero non deve essere salvato nel vettore). Stampare a video il vettore acquisito. (UTILIZZARE LA TECNICA DEL FLAG)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Qui non si fanno esercizi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Qui non si fanno esercizi.
    Facci vedere che hai scritto e dicci che errori ottieni, poi noi ti aiutiamo a correggere il codice.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Facci vedere che hai scritto e dicci che errori ottieni, poi noi ti aiutiamo a correggere il codice.
    Nel primo esercizio, non so come usare le stringhe nel bubble sort! Non so come modificarlo!

    Bubble sort normle:
    #include <stdio.h>
    #include <stdlib.h>


    int main()
    {
    int numeri[5], i, j, h;

    // Ciclo per riempire l'array
    for(i=0; i<5; i++)
    {
    printf("Immetti un numero: \n");
    scanf("%d",&numeri[i]);
    }


    for(i=0; i<5; i++)
    {
    for(j=0; j<(5-i); j++)
    {
    if(numeri[j]>numeri[j+1])
    {
    //SCAMBIA LOCAZIONE DI INDICE J CON LOCAZIONE DI INDICE J+1
    h = numeri[j];
    numeri[j] = numeri[j+1];
    numeri[j+1] = h;
    }
    }
    }

    for(i=0; i<5; i++)
    {
    printf("Elemento numeri[%d] = %d: \n",i,numeri[i]);
    }

    system("PAUSE");
    return 0;
    }


    Come lo modifico?

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Cambi i tipi di dato e l'input in modo da poter utilizzare le stringhe e per confrontare gli elementi usi strcmp dalla libreria string.h
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Quindi diventa:

    int main()
    {
    int i, j, h;
    typedef char tipo_stringa[255];
    tipo_stringa nome[i]


    e poi?

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da LinguaggioC Visualizza il messaggio
    Quindi diventa:

    int main()
    {
    int i, j, h;
    typedef char tipo_stringa[255];
    tipo_stringa nome[i]


    e poi?
    Quel codice è già errato: i è una variabile e per di più non è inizializzata.

    Comunque devi usare i tag CODE. Dai una letta al Regolamento del forum.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    codice:
    typedef char tipo_stringa[255];

    Anche questo non ha senso: stai dicendo che un array di tipo_stringa equivale a un char.
    A mio parere, in questo esercizio non è necessario definire nuovi tipi di dato, ma se proprio lo vuoi fare allora puoi pensare che una stringa non è altro che un array di char. Quindi

    codice:
    typedef char* String

    Questo è un MWE (Minamal Working Example):

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    typedef char* String;
    
    
    int main()
    {
        /* allocazione della stringa */
        String m_string = (String) malloc(200 * sizeof(char));
    
    
        printf("Inserire una stringa: ");
        scanf("%s", m_string);
        printf("Hai inserito %s\n", m_string);
    
    
        /* allocazione di un'altra stringa */
        String altra_string = (String) malloc(200 * sizeof(char));
    
    
        /* copio nella seconda stringa il contenuto della prima */
        strcpy(altra_string, m_string);
    
    
        printf("Ripeto: %s\n", altra_string);
    
    
        return 0;
    }

    P.S. In questo modo leggi una sola parola. Se invece vuoi leggere una frase intera (con gli spazi) allora puoi utilizzare la funzione fgets.


  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da minomic Visualizza il messaggio
    codice:
    typedef char tipo_stringa[255];

    Anche questo non ha senso: stai dicendo che un array di tipo_stringa equivale a un char.
    A mio parere, in questo esercizio non è necessario definire nuovi tipi di dato, ma se proprio lo vuoi fare allora puoi pensare che una stringa non è altro che un array di char. Quindi

    codice:
    typedef char* String
    Non diciamo cavolate, quella riga di codice aveva un senso.
    Definiva un tipo di dato tipo_stringa che rappresenta un char [255].
    Infatti prova a eseguire questo codice:
    codice:
    #include <stdio.h>#include <string.h>
    
    
    
    
    typedef char tipo_stringa[255];
    
    
    int main()
    {
        /* allocazione della stringa */
        tipo_stringa m_string;
    
    
    
    
        printf("Inserire una stringa: ");
        scanf("%s", m_string);
        printf("Hai inserito %s\n", m_string);
    
    
    
    
        /* allocazione di un'altra stringa */
        tipo_stringa altra_string;
    
    
    
    
        /* copio nella seconda stringa il contenuto della prima */
        strcpy(altra_string, m_string);
    
    
    
    
        printf("Ripeto: %s\n", altra_string);
    
    
    
    
        return 0;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non solo è legittimo ma è anche un metodo che ho notato piuttosto usato negli esercizi degli studenti.

    Tuttavia non mi piace che un tipo di dato rappresenti un vettore dimensionato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.